当前位置:文档之家› 计算机网络原理实验报告 基于TCPUDP的Socket编程

计算机网络原理实验报告 基于TCPUDP的Socket编程

第1页 共8页 实验报告 学院(系)名称:计算机科学与工程学院 姓名 学号 专业 计算机

班级 实验 项目 实验二:基于TCP/UDP的Socket编程 课程名称 计算机网络原理 课程 代码 0662013

实验时间 2019年04月28日 5-6节 2019年04月30日 3-4节 实验 地点 7-219 考核标 准

实验准备(实验目的/工具熟悉情况)10分 实验过程(实验方案可行性及步骤完整性)40分 实验报告(实验内容丰富度与格式清晰度) 30分 实验结果(结论正

确性以及分析合理性)20分 成绩

教师签字: 考核内容 评价实验目的是否明确,实验工具是否清晰了解以及熟悉情况 ○可行,完整 ○可行,不完整 ○不可行,不完整 ○丰富,清晰 ○较丰富,较清晰 ○丰富,不清晰 ○不丰富,不清晰 ○结论正确,分析合理 ○结论正确,分析不充分

○结论不正确,分析不合理 第2页 共8页

1. 实验目的 熟悉和掌握socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。

2. 实验工具 eclipse

3. 实验方案 利用Java或C++语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。 修改上述程序,实现服务器根据客户请求,将服务器端指定的文件可靠地传输给客户。如果服务器没有指定的文件,服务器将给客户返回一个信息,通知客户其请求文件不存在。

4. 实验步骤 实现将字符串变换成大写传回给客户 Tcpcilent

package uppercase; import java.io.*; import java.net.*;

public class TCPClient { public static void main(String argv[]) throws Exception { String HOST = "0.0.0.0"; String sentence; String modifiedSentence; BufferedReader infromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket(HOST, 1234); 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("FROM SERVER:" + modifiedSentence); clientSocket.close(); } } 第3页 共8页

Tcpsever: package uppercase; import java.io.*; import java.net.*;

class TCPServer{ public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(1234); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader infromClient = new BufferedReader(new InputStreamReader(connectionSocket. getInputStream())); DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = infromClient. readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } } }

用udp完成字符串大写 Udpsever:

package uppercase; import java.io.*; import java.net.*; class UDPServer { 第4页 共8页

public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(1234); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; 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(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } } }

Udpclient package uppercase; import java.io.*; import java.net.*;

class UDPClient { public static void main(String args[]) throws Exception { String HOST = "127.0.0.1"; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName(HOST); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 1234); 第5页 共8页

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(); } }

用tcp传输文件 package uppercase; import java.io.*; import java.net.Socket;

class TCPFileClient { public static void main(String argv[]) throws Exception { String HOST = "0.0.0.0"; String filePath = "D:/bn/"; BufferedReader infromUser = new BufferedReader(new InputStreamReader(System.in)); String fileName = infromUser.readLine(); BufferedWriter bWriter = new BufferedWriter(new FileWriter(filePath + fileName)); Socket clientSocket = new Socket(HOST, 8810); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

相关主题