Socket编程实验报告.docx

上传人:小飞机 文档编号:3166015 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.17KB
返回 下载 相关 举报
Socket编程实验报告.docx_第1页
第1页 / 共6页
Socket编程实验报告.docx_第2页
第2页 / 共6页
Socket编程实验报告.docx_第3页
第3页 / 共6页
Socket编程实验报告.docx_第4页
第4页 / 共6页
Socket编程实验报告.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Socket编程实验报告.docx》由会员分享,可在线阅读,更多相关《Socket编程实验报告.docx(6页珍藏版)》请在三一办公上搜索。

1、Socket编程 实验报告实验名称:利用Socket进行网络编程 班级:软件 实验目的 学号:0 姓名: 熟悉和掌握socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。 实验要求 掌握一些windows XP下的网络命令,记录实验的过程、结果以及遇到的问题及解决方法,并撰写实验总结。 实验过程 1. 了解Socket编程的工作过程 2. 实用UDP进行编程,实现简单的聊天程序 3. 下图为我自己编写的实验代码,该聊天程序,实现了客户端和服务器之间的聊天功能,使用UDP和线程相关知识编写而成。 当客户端输入聊天内容后,服务

2、器收到聊天内容,然后,服务器可以回复客户端,如下图为服务器端的实验结果。 4.具体代码见附录 调试过程 实验过程总体比较顺利,但是在客户端,开始只声明了一个DatagramPacket对象,即我在客户端发送数据,和接受数据时,都只用这一个packet,开始认为,接收到的新的packet会覆盖掉原来的那个,但是事实上是,收到的packet确实被收到的数据更新了,但是由于这个对象在内存中的对象还是和发送是声明的那个一样,所以,如果客户端发送三个字,而服务器恢复客户端5个字,结果客户端只能收到三个字,因为,客户端的packet在发送数据时就已经确定了它发送和接受数据的长度,即三个字,所以导致,在客户

3、端发送内容少于服务器回复的内容时,客户端只能接收到服务器发来的部分内容。后来,在客户端又声明了一个新的接受数据的DatagramPacket,问题得以解决。 总结 经过这次试验,我进一步理解和复习了UDP的socket编程的工作过程和原理,对比TCP,UDP更加简单,快速,因为它本身就是面向无连接的,所以在编程的时候,服务器和客户端其实分得 不是很清楚,许多代码都可以共用,通信的双方处于基本对等的地位, 并且在这次试验中,在修改客户端的DatagramPacket 时,得到的经验很宝贵,让我进一步理解了对象在内存中的实际模型,所以,在实际编程中,一定要实时的在自己的脑海中树立内存模型的概念 附

4、录 /*客户端代码*/ package threadUDPChat; import java.io.BufferedReader; import java.io.InputStreamReader; import .DatagramPacket; import .DatagramSocket; import .InetAddress; public class Client implements Runnable DatagramSocket sktClient ; DatagramPacket paktRecv; DatagramPacket paktSend; InetAddress ad

5、dress; String content; int length; int port; byte bufSend; byte bufRecv; public Client try sktClient = new DatagramSocket; this.address = InetAddress.getByName(127.0.0.1); this.port = 9999; / TODO Auto-generated constructor stub catch (Exception e) Override public void run public static void main(St

6、ring args) Client c = new Client; Thread t = new Thread(c); t.start; / TODO Auto-generated method stub while(true) try BufferedReader br = new BufferedReader(new InputStreamReader(System.in); content = br.readLine; /content = hello , server .; bufSend = content.getBytes; this.paktSend = new Datagram

7、Packet(bufSend, bufSend.length, address, port); this.sktClient.send(paktSend); /System.out.println(已发送信息); /this.sktClient.close; /接收 this.bufRecv = new byte100; this.paktRecv = new DatagramPacket(bufRecv, bufRecv.length); this.sktClient.receive(paktRecv); this.content = new String(this.paktRecv.get

8、Data,0,this.paktRecv.getLength); System.out.println(this.paktRecv.getAddress.getHostName+:+content); /System.out.println(收到服务器信息); / TODO Auto-generated catch block e.printStackTrace; / TODO Auto-generated catch block e.printStackTrace; catch (Exception e) /*服务器端*/ package threadUDPChat; import java

9、.io.BufferedReader; import java.io.InputStreamReader; import .DatagramPacket; import .DatagramSocket; public class Server implements Runnable DatagramSocket sktServer ; DatagramPacket paktRecv; DatagramPacket paktSend; String content; int length; int port; byte bufSend; byte bufRecv; public Server O

10、verride public void run / TODO Auto-generated method stub while(true) try this.bufRecv = new byte100; this.paktRecv = new DatagramPacket(bufRecv, bufRecv.length); this.sktServer.receive(paktRecv); this.content = new String(this.paktRecv.getData,0,this.paktRecv.getLength); System.out.println(this.pak

11、tRecv.getAddress.getHostName+:+content); /System.out.println(收到客户信息); /发送 BufferedReader br = new BufferedReader(new InputStreamReader(System.in); content = br.readLine; /content = hello , client .; bufSend = content.getBytes; this.paktSend = new DatagramPacket(bufSend, bufSend.length, this.paktRecv

12、.getAddress, this.sktServer.send(paktSend); /System.out.println(已发送信息); /this.sktServer.close; catch (Exception e) / TODO Auto-generated catch block / TODO Auto-generated constructor stub try this.sktServer=new DatagramSocket(9999); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace; this.paktRecv.getPort); e.printStackTrace; public static void main(String args) Server s = new Server; Thread t = new Thread(s); t.start;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号