资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
文档供参考,可复制、编制,期待您的好评与关注! 计算机网络实验报告信息安全2015年4月1日实验二 网络基础编程实验一、 实验目的通过本实验,学习采用Socket(套接字)设计简单的网络数据收发程序,理解应用数据包是如何通过传输层进行传送的。二、实验内容2.1、编写TCP进行数据发送的简单程序(java) 2.2、编写UDP进行数据发送的简单程序(java) 2.3多线程线程池对比 2.4写一个简单的chat程序,编程语言不限。三、 实验程序(1)TCP客户端TcpClient.javaimport java.io.*;import java.net.*;public class TcpClientpublic static void main(String argv) throws Exception String sentence;/定义客户消息 String modifiedSentence;/定义服务器消息 InetAddress address = InetAddress.getLocalHost();/获取本机端口 BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in); /创建客户输入流 /创建一个Scoket实例:构造函数向指定的远程主机和端口建立一个TCP连接。address.getHostName()为本机IP地址;6789为TCP服务器端口 Socket clientSocket = new Socket(address.getHostName(),6789); /客户套接字 /通过套接字的输入输出流(I/O streams)进行通信DataOutputStream outToServer = new DataOutputStream( clientSocket.getOutputStream(); /创建客户端到服务器的输出流BufferedReader inFromServer = new BufferedReader( new InputStreamReader(clientSocket.getInputStream(); /创建服务端输入流 sentence = inFromUser.readLine();/客户端读取客户输入消息 outToServer.writeBytes(sentence+n); /客户端发送消息到服务器端 modifiedSentence =inFromServer.readLine();/客户端接收来自服务器的消息 System.out.println(client receive from TCP server: + modifiedSentence);/客户端显示服务器发送过来的消息 clientSocket.close(); /客户端关闭套接字 (2)TCP服务器端TcpServer.javaimport java.io.*;import java.net.*;public class TcpServer public static void main(String argV) throws Exception String clientSentence;/定义接收的消息 String capitalizedSentence;/定义发送的消息 ServerSocket welcomeSocket= new ServerSocket(6789); /创建一个ServerSocket实例,并指定本地端口,侦听该指定端口收到的连接 while(true) Socket connectionSocket = welcomeSocket.accept(); /调用ServerSocket的accept()方法以获取下一个客户端连接,基于新建立的客户端连接,创建一个Socket实例,并由accept()方法返回。 BufferedReader inFromClient = new BufferedReader( new InputStreamReader(connectionSocket.getInputStream();/创建客户端输入流 DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream();/创建服务器输出流 /使用所返回的Socket实例的InputStream和OutputStream与客户端进行通信。 clientSentence = inFromClient.readLine(); /接收客户发送的信息 capitalizedSentence = clientSentence.toUpperCase()+n; /转换接收到的信息,小写变大写 outToClient.writeBytes(TCP accept +capitalizedSentence);/输出给客户端 (3)UDP通信服务器端 UDPServer.javaimport java.io.*;import java.net.*;public class UDPServer public static void main(String argV) throws Exception DatagramSocket serverSocket = new DatagramSocket (9876); /构造数据包套接字并将其绑定到主机上的端口9876 byte receiveData = new byte1024; /服务器从客户端接收到的信息 byte sendData = new byte1024; /服务器发送给客户端的信息 while(true) DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length); /创建从客户端数据包 serverSocket.receive(receivePacket); /服务器从客户端接收数据包 String sentence = new String(receivePacket.getData(); /服务器接打开数据包得到消息 InetAddress IPAddress = receivePacket.getAddress();/获取客户端的IP地址 int port = receivePacket.getPort();/获取客户端端口 String capitalizedSentence = sentence.toUpperCase();/将接收的信息转为大写 sendData = capitalizedSentence.getBytes(); /转换后的消息 /服务器发送给客户端的数据包,将转换后的消息打包 DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress,port); serverSocket.send(sendPacket);/服务器发送数据包给客户端 (4)UDP通信客户端 UDPClient.javaimport java.io.*;import java.net.*;public class UDPClientpublic static void main(String argv) throws Exception byte receiveData = new byte1024; /客户端接收的消息 byte sendData = new byte1024; /客户端发送的消息 BufferedReader inFromReader = new BufferedReader( new InputStreamReader(System.in);/客户输入流 DatagramSocket clientSocket = new DatagramSocket (); /客户端数据包套接字 InetAddress IPAddress = InetAddress.getLocalHost(); /获取本机IP地址 String sentence = inFromReader.readLine(); /客户端读取用户所输入的消息 sendData = sentence.getBytes(); /复制到要发送的消息 /客户端发送的数据包,这里将客户端要发送的消息,客户端的IP地址,端口打包 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(client receive from UDP server: + modifiedSentence + from from the client!); /客户端显示数据包里的消息 clientSocket.close(); /关闭套接字 (5) 通过TCP协议与回馈服务器(echo server)进行通信的客户端TCPEchoClient.javaimport java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketAddress;public class TCPEchoServerprivate static final int BUFSIZE = 32;public static void main(String args) throws IOExceptionif (args.le
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号