基于TCPandUDPsocket编程

上传人:仙*** 文档编号:87851391 上传时间:2022-05-10 格式:DOC 页数:7 大小:62KB
返回 下载 相关 举报
基于TCPandUDPsocket编程_第1页
第1页 / 共7页
基于TCPandUDPsocket编程_第2页
第2页 / 共7页
基于TCPandUDPsocket编程_第3页
第3页 / 共7页
点击查看更多>>
资源描述
-*理工大学实验报告学院系名称:计算机与通信工程学院强*20126*专业计算机科学与技术中加班级教学2班实验工程基于TCP and UDP的socket编程课程名称计算机网络课程代码0662016实验时间2015年4月30日 第7、8节实验地点7-215批改意见成绩教师签字:(一) 实验目的:熟悉和掌握socket编程的根本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。二实验环境:软件环境:Windows 2000*P /Eclipse硬件环境:IBMPC或兼容机局域网、PC机连入Internet三实验学时:2学时,必做.(四) 实验容:利用Java或C+语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。要现客户向效劳器传输任意一个字符串,效劳器将收到的字符串变换成大写后传回客户。五实验要求:每位同学上机编程实验,实验指导教师现场指导。程序可参考附录的程序1、程序2、程序3和程序4程序中有错误需完善。在实验报告中要说明Socket编程的客户端和效劳器端主要步骤、利用Java语言用到的主要类及其主要作用、TCP和UDP编程的主要差异和特点、你所实现的文件传输的程序代码、实验过程和实验结果。(六) 实验步骤:程序代码:TCPClient:package tcpClient;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import .Socket;public class tcpClient private static Socket clientSocket;public static void main(String args) throws E*ception String sentence; / 声明字符串变量用于存储字符串输入和传送String modifiedSentence;/ 从效劳器得到,并送到用户标准输出System.out.println(请输入要转换的字符串:);clientSocket = new Socket(localhost, 8579); / clientSocket为定义的套接字BufferedReader inFromUser = new BufferedReader( / 创立inFromUser程序的输入流new InputStreamReader(System.in); / 将流连接到标准输入DataOutputStream outToServer = new DataOutputStream( / DataOutputStream包含在java.io.*包中clientSocket.getOutputStream();BufferedReader inFromServer = / inFromServer 连接套接字的输入流new BufferedReader(new InputStreamReader( / BufferedReader包含在java.io.*包中clientSocket.getInputStream();sentence = inFromUser.readLine(); / 将用户输入的一行 读入到sentence中outToServer.writeBytes(sentence + n); / outToServer程序的输出流modifiedSentence = inFromServer.readLine();/ 当到达效劳器时,他们进入modifiedSentence字符串中System.out.println(FROM SERVER: + modifiedSentence);/ 将效劳器返回来的/ modifiedSentence打印到监视器上clientSocket.close(); / 关闭套接字,tcp连接也随之关闭TCP Server:package tcpServer;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import .ServerSocket;class server private static ServerSocket weleSocket;public static void main(String argv) throws E*ception String clientSentence; / 声明字符串变量用于存储字符串输入和传送String capitalizedSentence; / 从从客户端得到weleSocket = new ServerSocket(8579);/ 创立weleSocket对象,在8579端口进展监听while (true) Socket connectionSocket = weleSocket.accept();/ 获取从客户端传来的字符BufferedReader infromClient = new BufferedReader(new InputStreamReader( / BufferedReader包含在java.io.*包中connectionSocket.getInputStream();DataOutputStream outToClient = / outToClient程 序的输出流new DataOutputStream(connectionSocket.getOutputStream();clientSentence = infromClient.readLine(); / 把用户输入的送入clientSentence中capitalizedSentence = clientSentence.toUpperCase() + n;/ 将发送行中的小写转换成大写outToClient.writeBytes(capitalizedSentence);执行结果:UDP Client:package udpClient;import java.io.BufferedReader;import java.io.InputStreamReader;import .DatagramPacket;import .DatagramSocket;ess;public class udpClient public static void main(String args) throws E*ception System.out.println(请输入要转换的字符串:);BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in); / 创立输入流,用于输入字符串DatagramSocket clientSocket = new DatagramSocket(); / 创立一个DatagramSocket 对象InetAddress IPAddress = InetAddress.getByName(127.0.0.1); / 创立一个InetAddressbyte sendData = new byte1024; / 创立字节数组byte receiveData = new byte1024;String sentence = inFromUser.readLine(); / 读取输入的字符sendData = sentence.getBytes(); / 将字符串转化为字节数组DatagramPacket sendPacket = new DatagramPacket(sendData, / 创立DatagramPacket 对象,/ 指定其发送地址和端口号sendData.length, IPAddress, 8876);clientSocket.send(sendPacket); / 调用 socket 对象的 send()方法发送数据DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length); / 创立 DatagramPacket 对象, 用于接收数据clientSocket.receive(receivePacket); / / 调用 socket 对象的 receive()方法接收数据String modifiedSentence = new String(receivePacket.getData();System.out.println(FROM SERVER: + modifiedSentence);clientSocket.close(); / 关闭客户端socket连接UDP Server:package udpServer;import .DatagramPacket;import .DatagramSocket;import .InetAddress;public class udpServer public static void main(String args) throws E*ception SuppressWarnings(resource)DatagramSocket serverSocket = new DatagramSocket(8876);/ 创立一个DatagramSocket/ 对象,指定端口为8876byte receiveData = new byte1024; / 创立字节数组byte sendData = new byte1024;while (true) DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length); / 创立一个空DatagramPacket对象serverSocket.receive(receivePacket); / 使用 receiver 方法接手客户端所发送到数据,/ 如果客户端没有发送数据, 进程阻塞String sentence = new String(receivePacket.getData();InetAddress IPAddress = receivePacket.getAddress(); / 获取Client端IP地址int port = receivePacket.getPort(); / 获取Client端端口号String capitalizedSentence = sentence.toUpperCase(); / 将字符串转化成大写字母sendData = capitalizedSentence.getBytes();DatagramPacket sendPacket = new DatagramPacket(sendData,/ 创立DatagramPacket/ 对象,/ 指定其发送地址和端口号sendData.length, IPAddress, port);serverSocket.send(sendPacket); / 调用 socket 对象的 send()方法发送数据 执行结果:实验体会:1 Datagram Sockets:数据包socket,一般传输方式为UDP2 Stream Sockets:流socket,一般传输方式为TCPJava通过两个类DatagramSocket和DatagramPacket来支持但Datagram socketUDP。Datagram Socket不真正区分Server和Client,既可以用来写server,也可以写client。但对于java中的Socket类和ServerSocket类就只能分别来写客户端和效劳器端同时支持TCP与UDP,更Socket(String host,int port,boolean stream)构造方法中的stream即可。. z
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!