
-
TCP通信基础:
- TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- TCP通信需要建立连接(三次握手),数据传输完毕后需要断开连接(四次挥手)。
-
客户端功能:
- 客户端需要多次发送数据,这意味着客户端在与服务器建立连接后,可以连续发送多条消息。
-
服务器功能:
- 服务器需要接收客户端多次发送的数据,并将接收到的数据打印出来。
- 服务器通常会处于监听状态,等待客户端的连接请求。
java
package com.lkbhua.TcpAppDemp.Test.test1;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws IOException {
// 题目1: 多发多收
// 客户端: 多次发送数据
// 服务器: 接受多次接收数据,并打印
// 1、创建Socket象并连接服务端
Socket socket = new Socket("127.0.0.1",10000);
// 2、写出数据
Scanner sc = new Scanner(System.in);
OutputStream os = socket.getOutputStream();
while(true){
System.out.println("请输入你想要发送的数据:");
String str = sc.nextLine();
if("886".equals(str)){
break;
}
os.write(str.getBytes());
}
// 3、释放资源
socket.close();
}
}
java
package com.lkbhua.TcpAppDemp.Test.test1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 题目1: 多发多收
// 客户端: 多次发送数据
// 服务器: 接受多次接收数据,并打印
// 1、创建对象ServerSocket绑定端口
ServerSocket ss = new ServerSocket(10000);
// 2、等待客服端连接
Socket socket = ss.accept();
// 3、读取数据
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
int b;
while ((b = br.read()) != -1) {
System.out.print((char) b);
}
// 4、关闭流
socket.close();
ss.close();
System.out.println("服务端结束");
}
}