




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机通信网络实验UDP/TCP通信实验 一、 实验目的熟练掌握UDP、TCP Client/Server模式的通信原理二、 实验内容传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如图所示:第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。根据以上内容编写一个TCP Client/Server模式的通信程序。事实上网络程序是由两个部分组成:客户端、服务器端它们的建立步骤如下:服务器端 socket-bind-listen-accept客户端 socket-connect三、 实验步骤1. 编写UDP、TCP Client/Server模式的通信程序;2. 调试并运行自己编写的实现程序;3. 了解TCP Client/Server模式的工作原理,比较二者的不同,如出现异常情况,在实验报告中写出原因分析;4. 保留编写的实现程序。四、 实验过程1. TCP Client/Server模式的通信程序服务器端操作 socket(套接字):1在初始化阶段调用WSAStartup() 2、建立Socket3、绑定端口4、监听5、服务器端接受客户端的连接请求6、发送及接收信息7、结束 socket 连接相应的程序:Server:import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStreamReader; import .ServerSocket; import .Socket; public class Server public static final int PORT = 12345;/监听的端口号 public static void main(String args) System.out.println(服务器启动.n); Server server = new Server(); server.init(); public void init() try ServerSocket serverSocket = new ServerSocket(PORT); while (true) / 一旦有堵塞, 则表示服务器与客户端获得了连接 Socket client = serverSocket.accept(); / 处理这次连接 new HandlerThread(client); catch (Exception e) System.out.println(服务器异常: + e.getMessage(); private class HandlerThread implements Runnable private Socket socket; public HandlerThread(Socket client) socket = client; new Thread(this).start(); public void run() try / 读取客户端数据 DataInputStream input = new DataInputStream(socket.getInputStream(); String clientInputStr = input.readUTF();/这里要注意和客户端输出流的写方法对应,否则会抛 EOFException / 处理客户端数据 System.out.println(客户端发过来的内容: + clientInputStr); / 向客户端回复信息 DataOutputStream out = new DataOutputStream(socket.getOutputStream(); System.out.print(请输入:t); / 发送键盘输入的一行 String s = new BufferedReader(new InputStreamReader(System.in).readLine(); out.writeUTF(s); out.close(); input.close(); catch (Exception e) System.out.println(服务器 run 异常: + e.getMessage(); finally if (socket != null) try socket.close(); catch (Exception e) socket = null; System.out.println(服务端 finally 异常: + e.getMessage(); Client/package com.defonds.socket.begin; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import .Socket; public class Client public static final String IP_ADDR = localhost;/服务器地址 public static final int PORT = 12345;/服务器端口号 public static void main(String args) System.out.println(客户端启动.); System.out.println(当接收到服务器端字符为 OK 的时候, 客户端将终止n); while (true) Socket socket = null; try /创建一个流套接字并将其连接到指定主机上的指定端口号 socket = new Socket(IP_ADDR, PORT); /读取服务器端数据 DataInputStream input = new DataInputStream(socket.getInputStream(); /向服务器端发送数据 DataOutputStream out = new DataOutputStream(socket.getOutputStream(); System.out.print(请输入: t); String str = new BufferedReader(new InputStreamReader(System.in).readLine(); out.writeUTF(str); String ret = input.readUTF(); System.out.println(服务器端返回过来的是: + ret); / 如接收到 OK 则断开连接 if (OK.equals(ret) System.out.println(客户端将关闭连接); Thread.sleep(500); break; out.close(); input.close(); catch (Exception e) System.out.println(客户端异常: + e.getMessage(); finally if (socket != null) try socket.close(); catch (IOException e) socket = null; System.out.println(客户端 finally 异常: + e.getMessage(); 运行截图:Server:Client:五、 心得体会在本次UDP/TCP通信实验中,我不仅进一步熟练掌握socket的编程命令,而且在实际的编程中对UDP、TCP Client/Server模式的通信原理有了更深的了解,知道了它们之间的差异,TCPClient/Server模式的通信需要“三次握手”建立连接,然后才能进行通信,而且服务器不能同时与两个客户端进行连接,而UDPClient/Server模式的通信却可以。虽然在上次的socket编程实验中已经多sock
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年网络安全工程师中级面试宝典与预测题解析
- 2025年特岗教师招聘面试初中生物考点解析与应试策略
- 2025年特岗教师招聘考试教育教学能力测试备考攻略
- 2025年初级瑜伽教练认证考试试题与答案详解
- 2025年初级教师招聘面试预测题及备考指南
- 电力企业安全知识培训课件教学
- 2025年教育行业招聘面试技巧精讲与模拟题答案
- 2025年游戏开发工程师中级面试指南及模拟题详解
- 电信营业厅安全知识培训课件
- 2025年数据分析师中级面试预测题及答案
- 高中英语必背3500单词表完整版
- 残疾人家庭无障碍改造投标方案(技术标)
- 银行关于不动产抵押物权证保管操作模版
- 大金压缩机使用说明(D型)
- 心肺复苏术(三人组)操作程序及技术标准
- 工程进度计划横道图
- 医药代表销售技巧培训
- 牛的品种及生物学特性
- 阿特拉斯变频无油螺杆空压机说明书
- 口腔解剖生理学颞下颌关节精选课件
- 物料断点管理办法新旧状态零部件切换的交替点管理程序
评论
0/150
提交评论