基于TCP和UDP的socket编程.doc_第1页
基于TCP和UDP的socket编程.doc_第2页
基于TCP和UDP的socket编程.doc_第3页
基于TCP和UDP的socket编程.doc_第4页
基于TCP和UDP的socket编程.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1课程设计名称网络编程实验2课程设计目的1.通过基于TCP的Socket程序的编写、调试,掌握以下知识点:1)Socket的编程方法;2)基于TCP协议的网络应用的传输特点。2. 通过基于UDP的Socket程序的编写、调试,掌握以下知识点:1)Socket的编程方法;2)基于UDP协议的网络应用的传输特点。3实验环境Windows,JDK1.8,文本编辑器4实验内容(算法、程序、步骤和方法)4.1 实验背景Socket,通常也称作“套接字”,是TCP/IP网络的编程的接口(API),用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式Socket是为面向连接的应用服务提供的一种接口,数据报式Socket是为无连接的服务提供的一种接口,本实验中,通过java语言编写的基于TCP/UDP的客户/服务器程序,让学生了解面向连接的网络应用程序的工作原理及其Socket程序设计的方法。4.2 实验准备4.2.1 TCP部分1.实验要求利用JAVA语言编写基于TCP的网络应用程序,需要了解下面相关知识:1)TCP/UDP基于字节流传输的基本原理;2)Socket的相关知识;3)Java编程基础,熟悉Java下的Socket类与ServerSocket类的方法。2. 基于TCP的Socket编程,需要完成客户端和服务器两部分的程序设计。在代码开发之前,需要对网络层应用的协议进行详细设计,本实验的应用层协议设计如下:(1)协议的格式:ACSII码字符,回车作为消息的结束。(2)协议的工作原理(2-1)客户端:从标准键盘中读入一行字符,通过Socket发送到服务器;收到服务器反馈的信息,将信息显示在标准输出屏幕上;关闭连接。(2-2)服务器端:从Socket中读出客户端发送的字符串信息;计算字符串的长度;将计算的结果通过Socket发送给客户端。4.2.2 UDP部分1.实验要求利用JAVA语言编写基于UDP的字符串逆序转换的网络应用程序,需要了解下面相关知识:1)UDP基于字节流传输的基本原理;2)Socket的相关知识;3) Java编程基础,Java下的DatagramSocket类的方法。2.基于UDP的Socket编程,需要完成客户端和服务器两部分的程序设计。在代码开发之前,需要对网络层应用的协议进行详细设计,本实验的应用层协议设计如下:(1)协议的格式:ACSII码字符,回车作为消息的结束。(2)协议的工作原理(2-1)客户端:从标准键盘中读入一行字符,通过Socket发送到服务器;收到服务器反馈的信息,将信息显示在标准输出屏幕上;关闭连接。(2-2)服务器端:从Socket中读出客户端发送的字符串信息;进行逆序转换;将转换的结果通过Socket发送给客户端。4.3 实验步骤4.3.1 TCP部分1.画好实现代码的流程图:Server(running on hostid)Create socket port = x,for incoming request:welcomeSocket =ServerSocket()Wait for incoming connection requestconnectSocket = welcomeSocket.accept()Read request from connectionSocketWrite reply to connectionSocketClose connectionSocketClientCreate socket connectied to hosted,port = x clientSocket = Socket()Send request using clientSocketRead reply from clientSocketClose clientSocketTCPconnection setup2.编写TCPServer.javaimport java.io.*;import .*;class TCPServer public static void main(String argv) throws Exception String clientSentence;String sentenceLength;ServerSocket welcomeSocket = new ServerSocket(6789);while(true)Socket connectionSocket = welcomeSocket.accept();BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream();DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream();clientSentence = inFromClient.readLine();sentenceLength = String.valueOf(clientSentence.length() + n;outToClient.writeBytes(sentenceLength);编写TCPClient.javaimport java.io.*;import .*;class TCPClient public static void main(String argv) throws Exception String sentence;String sentenceLength;BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in);Socket clientSocket = new Socket(DESKTOP-2PC4RS3, 6789);DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream();BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream();sentence = inFromUser.readLine();outToServer.writeBytes(sentence + n);sentenceLength = inFromServer.readLine();System.out.println(From Server: + sentenceLength);clientSocket.close();3. 在命令行中,分别通过javac TCPServer.java和javac TCPClient.java命令对客户端和服务器的源代码程序进行编译,编译结果如下:4.在命令行中输入java TCPServer启动服务器端程序:5.新建一个命令行窗口,输入java TCPClient启动客户端程序:6.在客户端输入“abcdefg”,服务器端返回字符串长度的结果为“From Server:7”。4.4.2 UDP部分1.画好实现代码的流程图:Server(running on hostid)Create socket port = x,for incoming request:serverSocket =DatagramSocket()Read request from serverSocketWrite reply to serverSocketspecifying client host address,port numberClientCreate socket clientSocket = DatagramSocket()Create address (hosted,port = x)send datagram request using clientSocketRead reply from clientSocketClose clientSocket2. 编写UDPServer.javaimport java.io.*;import .*;class UDPServer public static void main(String args) throws Exception DatagramSocket serverSocket = new DatagramSocket(9876);byte receiveData = new byte1024;byte sendData = new byte1024;byte sendModifiedData = new byte1024;String modifiedSentence = ;while(true)DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);serverSocket.receive(receivePacket);String sentence = new String(receivePacket.getData();InetAddress IPAddress = receivePacket.getAddress();int port = receivePacket.getPort();char c = sentence.toCharArray();for(int i = c.length-1;i=0;i-)modifiedSentence = modifiedSentence + ci;sendModifiedData = modifiedSentence.getBytes();DatagramPacket sendPacket = new DatagramPacket(sendModifiedData, sendModifiedData.length, IPAddress, port);serverSocket.send(sendPacket);编写UDPClient.javaimport java.io.*;import .*;class UDPClient public static void main(String args) throws Exception BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in);new BufferedReader(new InputStreamReader(System.in);DatagramSocket clientSocket = new DatagramSocket();InetAddress IPAddress = InetAddress.getByName(DESKTOP-2PC4RS3);byte sendData = new byte1024;byte receiveData = new byte1024;String sentence = inFromUser.readLine();sendData = sentence.getBytes();DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);clientSocket.send(sendPacket);DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);clientSocket.receive(receivePacket);String modifiedSentence = new String(receivePacket.getData();System.out.println(From Server: + modifiedSentence);clientSocket.close();3. 在命令行中,分别通过javac UDPServer.java和javac UDPClient.java命令对客户端和服务器的源代码程序进行编译,编译结果如下:4.在命令行输入java UDPServer命令启动服务器端程序:5.新建一个命令行窗口,输入jav

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论