欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

服务器端和客户端通过TCP协议进行数据交互的基本应用

程序员文章站 2022-06-28 18:43:20
网络编程——TCP编程举一个基本的例子来说明服务器端和客户端之间的数据交互,采用TCP协议实现。题目:客户端能够接收用户输入的两个数并发送到服务器;服务器端能够接收到这两个数并将其相加并将结果返回给客户端;客户端接收到结果后打印出来并关闭连接。TCP协议TCP协议:有链接、保证可靠的无误差通讯通信过程:①服务器:创建一个ServerSocket,等待连接②客户机:创建一个Socket, 连接到服务器③服务器: ServerSocket接收到连接,创建一个Socket和客户的Sock...

网络编程——TCP编程

举一个基本的例子来说明服务器端和客户端之间的数据交互,采用TCP协议实现。
题目:

  • 客户端能够接收用户输入的两个数并发送到服务器;
  • 服务器端能够接收到这两个数并将其相加并将结果返回给客户端;
  • 客户端接收到结果后打印出来并关闭连接。

TCP协议

TCP协议:有链接、保证可靠的无误差通讯

通信过程:
①服务器:创建一个ServerSocket,等待连接
②客户机:创建一个Socket, 连接到服务器
③服务器: ServerSocket接收到连接,创建一个Socket和客户的Socket建立专线连接,后续服务器和客户机的对话(这一对Socket)会在一个单独的线程(服务器端)上运行
④服务器的ServerSocket继续等待连接,返回①
服务器端和客户端通过TCP协议进行数据交互的基本应用

实现代码

(1)服务器端:接收到客户端发出的两个数据,并将其相加的结果返回给客户端

public class SumServer {

	public static void main(String[] args) {

		try {
			ServerSocket server = new ServerSocket(2019);
			Socket socket = server.accept();
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter pw = new PrintWriter(socket.getOutputStream());
			int sum = 0;
			for (int i = 0; i < 2; i++) {
				sum += Integer.parseInt(br.readLine());
			}
			pw.println(sum);
			pw.flush();
			br.close();
			pw.close();
			socket.close();
			System.out.println(sum);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

(2)客户端:将用户输入的两个数发送到服务器,并能够接收服务器发送的结果

public class SumClient {

	public static void main(String[] args) {
		Socket socket;
		try {
			socket = new Socket("127.0.0.1", 2019);
			PrintWriter pw = new PrintWriter(socket.getOutputStream());
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			Scanner scanner = new Scanner(System.in);
			for (int i = 0; i < 2; i++) {
				System.out.printf("Please input number %d: ", i + 1);
				pw.println(scanner.nextInt());
			}
			pw.flush();
			String s = br.readLine();
			System.out.printf("The result is : %s \n", s);
			pw.close();
			br.close();
			socket.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

本文地址:https://blog.csdn.net/yh991314/article/details/107361877