实验08Java之网络编程Word文档下载推荐.docx
《实验08Java之网络编程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验08Java之网络编程Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。
//将字节流变为字符流,有转换功能
OutputStreamWriterout=null;
try{
client=newSocket("
localhost"
4331);
}catch(UnknownHostExceptione2){
//TODOAuto-generatedcatchblock
e2.printStackTrace();
}catch(IOExceptione2){
}
in=newInputStreamReader(client.getInputStream());
}catch(IOExceptione1){
e1.printStackTrace();
out=newOutputStreamWriter(client.getOutputStream());
BufferedWriterbout=newBufferedWriter(out);
BufferedReaderbin=newBufferedReader(in);
while(true){//从客户端向服务器传输数据
System.out.println("
请输入'
Time'
或者'
Exit'
"
);
Scannerreader=newScanner(System.in);
try{
bout.write(reader.next());
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
bout.newLine();
bout.flush();
Stringmassage=null;
massage=bin.readLine();
if(massage.equals("
Bye"
)){
System.out.println("
From
server:
+massage);
break;
else
System.out.println("
从服务器返回的时间:
}
client.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
importjava.io.DataOutputStream;
import.ServerSocket;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassServer{
ServerSocketserver=null;
server=newServerSocket(4331);
System.out.println("
服务器启动完毕"
等待客户端连接..."
Socketyou=null;
you=server.accept();
InputStreamReaderin=null;
OutputStreamWriterout=null;
in=newInputStreamReader(you.getInputStream());
out=newOutputStreamWriter(you.getOutputStream());
BufferedWriterbout=newBufferedWriter(out);
BufferedReaderbin=newBufferedReader(in);
if(you.isConnected()){
客户端名称为"
+you.getInetAddress().getHostAddress()
+"
连接成功!
while(true){
Strings=null;
try{
s=bin.readLine();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
if(s.equals("
Time"
)){
Datedate=newDate();
客户端请求当前时间"
SimpleDateFormatformat=newSimpleDateFormat(
"
yyyy/MM/ddHH:
mm:
ss"
}elseif(s.equals("
exit"
bout.write("
bye!
!
you.close();
[基本要求]编写完整程序。
实验题2编写一数据报通信程序,实现简单的聊天功能。
图3.9聊天程序界面
[基本要求]两人一组编写完整程序。
“聊天内容”和“输入文本”分别为当前聊天的历史信息和当前要传送出去的聊天文本。
“确定”、“清空”、“退出”三个按钮分别实现发送当前聊天文本、清空当前聊天文本和退出系统的功能。
importjava.awt.*;
importjava.awt.event.*;
import.*;
importjavax.swing.*;
publicclassUDPmessageextendsJFrameimplementsActionListener{
privateJTextAreatext;
privateJTextFieldipText;
privateJTextFieldsendText;
privateJButtonbutton1;
privateJButtonbutton2;
privateJButtonbutton3;
privateDatagramSocketsocket;
privateJScrollBarvsBar;
publicUDPmessage(){
setTitle("
UDP聊天程序"
setBounds(100,100,400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(newBorderLayout());
text=newJTextArea();
text.setEditable(false);
JScrollPanetextPanel=newJScrollPane(text);
vsBar=textPanel.getVerticalScrollBar();
add(textPanel,BorderLayout.CENTER);
JPanelpanel=newJPanel();
//一定要有的
BorderLayoutpanelLayout=newBorderLayout();
panelLayout.setHgap(5);
panel.setLayout(panelLayout);
ipText=newJTextField("
192.168.1.103"
panel.add(ipText,BorderLayout.WEST);
sendText=newJTextField();
panel.add(sendText,BorderLayout.CENTER);
button1=newJButton("
确定"
//button2=newJButton("
清空"
//button3=newJButton("
退出"
panel.add(button1,BorderLayout.EAST);
add(panel,BorderLayout.SOUTH);
setVisible(true);
server();
button1.addActionListener(this);
privatevoidserver(){
socket=newDatagramSocket(9527);
}catch(SocketExceptione){
}//实例化数据报套接字
byte[]buf=newbyte[1024];
finalDatagramPacketdpl=newDatagramPacket(buf,buf.length);
//创建接收数据的数据包
Runnablerunnable=newRunnable(){
publicvoidrun(){
while(true){
try{
Thread.sleep(100);
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
socket.receive(dpl);
}catch(IOExceptione){
intlength=dpl.getLength();
Stringmessage=newString(dpl.getData(),0,length);
//获取数据包的字符串信息
Stringip=dpl.getAddress().getHostAddress();
if(!
InetAddress.getLocalHost().getHostAddress().equals(ip));
}catch(UnknownHostExceptione){
text.append(ip+"
:
\n
+message+"
\n"
vsBar.setValue(vsBar.getMaximum());
//控制信息滚动
};
publicvoidactionPerformed(ActionEventev){
Stringip=ipText.getText();
//获取IP文本框内容
InetAddressaddress=null;
address=InetAddress.getByName(ip);
byte[]data=sendText.getText().getBytes();
//获取发送的数据
DatagramPacketdp=newDatagramPacket(data,data.length,address,9527);
//定义数据包
Stringmyip=null;
myip=InetAddress.getLocalHost().getHostAddress();
}catch(UnknownHostExceptione1){
}//获取本机IP
//将发送信息添加到信息接收文本域中
text.append(myip+"
+sendText.getText()+"
socket.send(dp);
}//发送数据包
sendText.setText(null);
publicstaticvoidmain(Stringargs[]){
//JFrameframe=newUDPmessage();
UDPmessageudp=newUDPmessage();
udp.setVisible(true);