15实验十五 网络编程实验代码.docx
- 文档编号:3924989
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:28
- 大小:19.12KB
15实验十五 网络编程实验代码.docx
《15实验十五 网络编程实验代码.docx》由会员分享,可在线阅读,更多相关《15实验十五 网络编程实验代码.docx(28页珍藏版)》请在冰点文库上搜索。
15实验十五网络编程实验代码
实验十五网络编程
程序清单15-1
//WebBrowser.java
importjava.awt.*;
importjava.awt.event.*;
import.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclassWebBrowserextendsJFrame{
privateJTextFieldenterField;
privateJEditorPanecontentsArea;
publicWebBrowser()
{
代码1//调用父类构造函数
Containercontainer=getContentPane();
代码2//创建JTextField对象enterField
enterField.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
getThePage(event.getActionCommand());
}
}
);
container.add(enterField,BorderLayout.NORTH);
contentsArea=newJEditorPane();
contentsArea.setEditable(false);
contentsArea.addHyperlinkListener(
newHyperlinkListener(){
publicvoidhyperlinkUpdate(HyperlinkEventevent)
{
if(event.getEventType()==
HyperlinkEvent.EventType.ACTIVATED)
getThePage(event.getURL().toString());
}
}
);
container.add(newJScrollPane(contentsArea),
BorderLayout.CENTER);
setSize(400,300);
setVisible(true);
}
privatevoidgetThePage(Stringlocation)
{
try{
contentsArea.setPage(location);
enterField.setText(location);
}
catch(IOExceptionioException){
JOptionPane.showMessageDialog(this,
"获取指定URL错误","非法URL",
JOptionPane.ERROR_MESSAGE);
}
}
publicstaticvoidmain(Stringargs[])
{
代码3//创建WebBrowser应用程序对象application
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
程序清单15-2
//CurrencyServer.java
importjava.io.*;
import.*;
publicclassCurrencyServer
{
publicstaticvoidmain(String[]args)
{
try
{
ServerSocketserverSocket=newServerSocket(8000);
System.out.println("服务器已启动...");
Socketconnection=serverSocket.accept();
DataInputStreamdataInput=newDataInputStream(
connection.getInputStream());
DataOutputStreamdataOutput=newDataOutputStream(
connection.getOutputStream());
while(true)
{
doubledollar=dataInput.readDouble();
System.out.println("客户要转换的美元:
"+dollar);
doubleRMB=dollar*8.27;
dataOutput.writeDouble(RMB);
dataOutput.flush();
System.out.println("人民币:
"+RMB);
}
}
catch(IOExceptionex)
{
System.err.println(ex);
}
}
}
程序清单15-3
//CurrencyClient.java
importjava.io.*;
import.*;
importjava.util.*;
publicclassCurrencyClient
{
staticScannerscanner=newScanner(System.in);
publicstaticvoidmain(String[]args)
{
try
{
Socketconnection=newSocket("localhost",8000);
DataInputStreamdataInput=newDataInputStream(
connection.getInputStream());
DataOutputStreamdataOutput=
newDataOutputStream(connection.getOutputStream());
while(true)
{
System.out.print("请输入美元:
");
doubledollar=scanner.nextDouble();
dataOutput.writeDouble(dollar);
dataOutput.flush();
doubleRMB=dataInput.readDouble();
System.out.println("服务器返回人民币:
"+RMB);
}
}
catch(IOExceptionex)
{
System.err.println(ex);
}
}
}
程序清单15-4
//TalkServer.java
importjava.io.*;
import.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassTalkServerextendsJFrame{
privateJTextFieldenterField;
privateJTextAreadisplayArea;
privateObjectOutputStreamoutput;
privateObjectInputStreaminput;
privateServerSocketserver;
privateSocketconnection;
privateintcounter=1;
publicTalkServer()
{
super("服务器端");
Containercontainer=getContentPane();
enterField=newJTextField();
enterField.setEditable(false);
enterField.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
sendData(event.getActionCommand());
enterField.setText("");
}
}
);
container.add(enterField,BorderLayout.NORTH);
displayArea=newJTextArea();
container.add(newJScrollPane(displayArea),BorderLayout.CENTER);
setSize(300,150);
setVisible(true);
}
publicvoidrunServer()
{
try{
server=newServerSocket(12345,100);
while(true){
try{
waitForConnection();
getStreams();
processConnection();
}
catch(EOFExceptioneofException){
System.err.println("服务器终止了连接");
}
finally{
closeConnection();
++counter;
}
}
}
catch(IOExceptionioException){
ioException.printStackTrace();
}
}
privatevoidwaitForConnection()throwsIOException
{
displayMessage("服务器已启动等待连接...\n");
connection=server.accept();
displayMessage("收到连接"+counter+"从"+
connection.getInetAddress().getHostName()+"\n");
}
privatevoidgetStreams()throwsIOException
{
output=newObjectOutputStream(connection.getOutputStream());
output.flush();
input=newObjectInputStream(connection.getInputStream());
}
privatevoidprocessConnection()throwsIOException
{
Stringmessage="连接成功!
";
sendData(message);
setTextFieldEditable(true);
do{
try{
message=(String)input.readObject();
displayMessage("\n"+message);
}
catch(ClassNotFoundExceptionclassNotFoundException){
displayMessage("\n收到异常对象类型");
}
}while(!
message.equals("客户端>>>stop"));
}
privatevoidcloseConnection()
{
displayMessage("\n终止连接\n");
setTextFieldEditable(false);
try{
output.close();
input.close();
connection.close();
}
catch(IOExceptionioException){
ioException.printStackTrace();
}
}
privatevoidsendData(Stringmessage)
{
try{
output.writeObject("服务器端>>>"+message);
output.flush();
displayMessage("\n服务器端>>>"+message);
}
catch(IOExceptionioException){
displayArea.append("\n发生写入错误");
}
}
privatevoiddisplayMessage(finalStringmessageToDisplay)
{
SwingUtilities.invokeLater(
newRunnable(){
publicvoidrun()
{
displayArea.append(messageToDisplay);
displayArea.setCaretPosition(
displayArea.getText().length());
}
}
);
}
privatevoidsetTextFieldEditable(finalbooleaneditable)
{
SwingUtilities.invokeLater(
newRunnable(){
publicvoidrun()
{
enterField.setEditable(editable);
}
}
);
}
publicstaticvoidmain(Stringargs[])
{
TalkServerapplication=newTalkServer();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.runServer();
}
}
程序清单15-5
//TalkClient.java
importjava.io.*;
import.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassTalkClientextendsJFrame{
privateJTextFieldenterField;
privateJTextAreadisplayArea;
privateObjectOutputStreamoutput;
privateObjectInputStreaminput;
privateStringmessage="";
privateStringchatServer;
privateSocketclient;
publicTalkClient(Stringhost)
{
super("客户端");
chatServer=host;
Containercontainer=getContentPane();
enterField=newJTextField();
enterField.setEditable(false);
enterField.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
sendData(event.getActionCommand());
enterField.setText("");
}
}
);
container.add(enterField,BorderLayout.NORTH);
displayArea=newJTextArea();
container.add(newJScrollPane(displayArea),
BorderLayout.CENTER);
setSize(300,150);
setVisible(true);
}
privatevoidrunClient()
{
try{
connectToServer();
getStreams();
processConnection();
}
catch(EOFExceptioneofException){
System.err.println("客户端关闭了连接");
}
catch(IOExceptionioException){
ioException.printStackTrace();
}
finally{
closeConnection();
}
}
privatevoidconnectToServer()throwsIOException
{
displayMessage("正在尝试连接...\n");
client=newSocket(InetAddress.getByName(chatServer),12345);
displayMessage("已连接到:
"+
client.getInetAddress().getHostName()+"\n");
}
privatevoidgetStreams()throwsIOException
{
output=newObjectOutputStream(client.getOutputStream());
output.flush();
input=newObjectInputStream(client.getInputStream());
}
privatevoidprocessConnection()throwsIOException
{
setTextFieldEditable(true);
do{
try{
message=(String)input.readObject();
displayMessage("\n"+message);
}
catch(ClassNotFoundExceptionclassNotFoundException){
displayMessage("\n收到异常对象类型");
}
}while(!
message.equals("服务器端>>>stop"));
}
privatevoidcloseConnection()
{
displayMessage("\n关闭连接");
setTextFieldEditable(false);
try{
output.close();
input.close();
client.close();
}
catch(IOExceptionioException){
ioException.printStackTrace();
}
}
privatevoidsendData(Stringmessage)
{
try{
output.writeObject("客户端>>>"+message);
output.flush();
displayMessage("\n客户端>>>"+message);
}
catch(IOExceptionioException){
displayArea.append("\n发生写入错误");
}
}
privatevoiddisplayMessage(finalStringmessageToDisplay)
{
SwingUtilities.invokeLater(
newRunnable(){
publicvoidrun()
{
displayArea.append(messageToDisplay);
displayArea.setCaretPosition(
displayArea.getText().length());
}
}
);
}
privatevoidsetTextFieldEditable(finalbooleaneditable)
{
SwingUtilities.invokeLater(
newRunnable(){
publicvoidrun()
{
enterField.setEditable(editable);
}
}
);
}
publicstaticvoidmain(Stringargs[])
{
TalkClientapplication;
if(args.length==0)
application=newTalkClient("127.0.0.1");
else
application=newTalkClient(args[0]);
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.runClient();
}
}
程序清单15-6
//MessengerServer.java
importjava.util.*;
import.*;
importjava.io.*;
publicclassMessengerServer{
publicvoidstartServer()
{
try{
ServerSocketserverSocket=newServerSocket(8000,100);
System.out.println("服务器已启动...");
while(true){
SocketclientSocket=serverSock
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15实验十五 网络编程实验代码 15 实验 十五 网络 编程 代码