网络编程程序报告

发布时间:



《网络通信编程》程序设计报告



级:号:名:指导老师:

2010.12.26




1
Socket...............................................................................................................3功能叙述........................................................................................................3服务器IP输入,连接服务器......................................................................3多线程套接字Socket基于TCP协议建立连接..........................................3查看聊天记录................................................................................................4关键程序代码................................................................................................4连接服务器代码............................................................................................4保存聊天记录代码.......................................................................................5实验结果........................................................................................................6连接服务器....................................................................................................6聊天界面........................................................................................................6查看聊天记录................................................................................................6UDP..................................................................................................................7功能叙述........................................................................................................7添加IP地址..................................................................................................7基于UDP网络信息传输..............................................................................7关键程序代码................................................................................................8获取IP地址代码..........................................................................................8基于UDP网络信息传输代码......................................................................9实验结果......................................................................................................10获取IP地址................................................................................................10基于UDP网络信息传输............................................................................11网络协议........................................................................................................12功能叙述......................................................................................................12输入服务器IP地址,请求连接................................................................12客户端向服务器发送确认信息.................................................................12双方设置密钥..............................................................................................13确认完毕,进行加密聊天.........................................................................14关键程序代码..............................................................................................14实验结果......................................................................................................16组播编程........................................................................................................17功能叙述......................................................................................................17局域网内广播数据.....................................................................................17关键程序代码..............................................................................................17实验结果......................................................................................................18心得体会........................................................................................................19
2
3
4
5




《网络通信编程》程序设计报告
08网络1李文城
1Socket
1.1功能叙述
服务器IP输入,连接服务器

多线程套接字Socket基于TCP协议建立连接





查看聊天记录

关键程序代码
连接服务器代码
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt{try{
InetAddressaddress=
InetAddress.getByName(jTextField1.getText(;
Socketsocket=newSocket(address,4331;newclientFrame(socket.setVisible(true;}catch(Exceptionex{}
}
与服务器建立连接,进行聊天代码try{
DataInputStreamin=newDataInputStream(socket.getInputStream(;while(true{
Strings=in.readUTF(;
jTextArea1.append(t.format(System.currentTimeMillis(+"
"+socket.getInetAddress(.toString(.substring(1+":\n"+s+"\n";}



}catch(IOExceptionex{}
try{
DataOutputStreamout=new
DataOutputStream(socket.getOutputStream(;
out.writeUTF(jTextArea2.getText(;
jTextArea1.append(t.format(System.currentTimeMillis(+""+InetAddress.getLocalHost(.getHostAddress(+":\n"+jTextArea2.getText(+"\n";
b=(t.format(System.currentTimeMillis(+"
"+InetAddress.getLocalHost(.getHostAddress(+":\n"+jTextArea2.getText(+"\n".getBytes(;
jTextArea2.setText(null;
}catch(Exceptionex{}
保存聊天记录代码
try{
Filef=new
File(socket.getInetAddress(.toString(.substring(1+".txt";FileOutputStreamout=newFileOutputStream(f,true;out.write(b;out.close(;
}catch(IOExceptionex{}
try{
RandomAccessFilef=newRandomAccessFile(address+".txt","r";
jTextArea1.setText(null;byte[]b=null;longposition=0;f.seek(position;
while(positionStrings=f.readLine(;
b=s.getBytes("iso-8859-1";s=newString(b;
position=f.getFilePointer(;jTextArea1.append(s+"\n";}
}catch(Exceptionex{}



实验结果
连接服务器

聊天界面

查看聊天记录




2UDP
功能叙述
添加IP地址

基于UDP网络信息传输




关键程序代码
获取IP地址代码
publicvoidactionPerformed(ActionEvente{booleanb=true;
if(jTextField1.getText(.length(!=0{for(inti=0;i
if(vector.get(i.trim(.equals(jTextField1.getText(.trim({
JOptionPane.showMessageDialog(null,"IP地址已在列表中","确定",JOptionPane.YES_OPTION;
jList1.setSelectedIndex(i;jTextField1.setText("";jTextField1.requestFocus(;b=false;break;}}
if(b==true{
vector.add(jTextField1.getText(.trim(;jList1.setListData(vector;try{
if(inout.length(==0{inout.seek(0;Strings=jTextField1.getText(.trim(+"\r\n";
inout.write(s.getBytes(;}else{
longlength=inout.length(;inout.seek(length;Strings=jTextField1.getText(.trim(+"\r\n";
inout.write(s.getBytes(;}
}catch(IOExceptione1{}jTextField1.setText("";jTextField1.requestFocus(;}}else{
JOptionPane.showMessageDialog(null,"你输入的IP地址为空","确定",JOptionPane.YES_OPTION;}}



};
基于UDP网络信息传输代码
try{
socket=newDatagramSocket(;
address=InetAddress.getByName(s;if(jTextArea2.getText(!=null{
byte[]data1=jTextArea2.getText(.getBytes(;DatagramPackets=new
DatagramPacket(data1,data1.length,address,port;
jTextArea1.append(InetAddress.getLocalHost(.getHostAddress(.toString(+":\n";
jTextArea1.append(jTextArea2.getText(.trim(+"\n";jTextArea2.setText(null;socket.send(s;}else{
JOptionPane.showMessageDialog(null,"消息不能为空","确定",JOptionPane.YES_OPTION;
jTextArea2.requestFocus(;}
}catch(IOExceptione{}



实验结果
获取IP地址




基于UDP网络信息传输




3网络协议
功能叙述
输入服务器IP地址,请求连接

客户端向服务器发送确认信息




双方设置密钥





确认完毕,进行加密聊天

关键程序代码
try{
PrintWriterout=new
PrintWriter(socket.getOutputStream(,true;
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream(;StringinputLine,outputLine;inputLine=null;streamDatasd;while(true{
if((inputLine=in.readLine(!=null{if(count==0{
sd=newstreamData(4,inputLine,4;System.out.println(inputLine;if(sd.head.equals(sd.end&&sd.head.equals("yuzi"{
inti=sf.dialog.showConfirmDialog(null,"确认信息为:"+sd.data+",正确吗?","确认对话框",JOptionPane.YES_NO_OPTION;
if(i==JOptionPane.YES_OPTION{
outputLine=sd.data+"已确认"+sd.data;



out.println(outputLine;count=1;
}else{socket.close(;}}
}elseif(count==1{
sd=newstreamData(9,inputLine,7;if(sd.head.equals("clientsec"&&sd.end.equals("comfirm"{
outputLine=sf.dialog.showInputDialog(null,"请输入密保信息","密保输入框",JOptionPane.INFORMATION_MESSAGE;while(outputLine==null{
outputLine=sf.dialog.showInputDialog(null,"请输入密保信息","密保输入框",JOptionPane.INFORMATION_MESSAGE;}
sf.jTextField1.setText(outputLine;sf.jTextField3.setText(sd.data;
out.println(sd.data+"confirmed"+outputLine;count=2;}
}elseif(count==2{
System.out.println(sf.jTextField1.getText(+""+sf.jTextField1.getText(;
if(inputLine.equals("confirmed"{sf.jTextField2.setEnabled(true;sf.jButton2.setEnabled(true;sf.jTextField2.requestFocus(;break;}}}}
Strings=null;while(true{
if((s=in.readLine(!=null{s=
s.substring((sf.jTextField1.getText(+sf.jTextField3.getText(.length(+1;

sf.jTextArea1.append(socket.getInetAddress(.toString(.substring(1+"\n"+s+"\n";}



}
}catch(Exceptionex{}
实验结果







4
组播编程
功能叙述
局域网内广播数据
关键程序代码
try{
group=InetAddress.getByName("224.1.1.1";socket=newMulticastSocket(port;socket.setTimeToLive(0;



socket.joinGroup(group;}
catch(Exceptione{}
publicvoidrun({try{
InetAddressgroup=InetAddress.getByName("224.1.1.1";MulticastSocketsocket=newMulticastSocket(5858;socket.joinGroup(group;while(true{
bytedata[]=newbyte[8192];DatagramPacketpacket=null;
packet=newDatagramPacket(data,data.length,group,5858;socket.receive(packet;
Stringmessage=newString(data;
jTextArea1.append(time.format(System.currentTimeMillis(+"\n"+message.trim(+"\n";}}
catch(Exceptione{}}
实验结果






5心得体会
通过实验,通过动手,通过对网络通信编程的学习,使我掌握了SocketUDP网络协议以及组播编程四个方面的知识,并且了解基于TCP和基于UDP两种不同协议之间的socket聊天,以及简单的网络协议和实现了简单的组播编程。在实验中,遇到了很多自己不能解决的问题,不过向许多同学请教了,在解决问题的过程中,自己也学到了很多关于网络通信的一些关键知识点,发现在许多身上的不足。这次编程做出来的软件很多只是实现简单基本的功能,特别在做UDP的时候,发现程序还是有许多的漏洞的,当通信发起方发送数据给接收方的时候,接收方能自动弹出窗口,但是接收方接收到数据再发送数据给通信发起方的时候,在通信发起方还是发再弹一个双方都建立好的窗体来,而此时的这个窗体才是双方都可以正常通信的线程.自己在以后的学习中会逐步加深这方面的理解,并且加强在这方面的学习。


网络编程程序报告

相关推荐