TCP:
传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前, 在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。
三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可 靠。
- 第一次握手,客户端向服务器端发出连接请求,等待服务器确认。
- 第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。
- 第三次握手,客户端再次向服务器端发送确认信息,确认连接
TCP漫画图解
TCP 网络程序
客户端流程:
1. 【服务端】启动,创建ServerSocket对象,等待连接。
2. 【客户端】启动,创建Socket对象,请求连接。
3. 【服务端】接收连接,调用accept方法,并返回一个Socket对象。
4. 【客户端】Socket对象,获取OutputStream,向服务端写出数据。
5. 【服务端】Scoket对象,获取InputStream,读取客户端发送的数据。
服务器端流程:
1. 【服务端】Socket对象,获取OutputStream,向客户端回写数据。
2. 【客户端】Scoket对象,获取InputStream,解析回写数据。
3. 【客户端】释放资源,断开连接。
小案例:
业务需求:
client 端不断接收键盘输入的数据 然后转发给server,server端不断的接收,并回复收到.
client 端
public class Client {
public static void main(String[] args) throws IOException {
while (true) {
//接收键入的数据
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
System.out.println(line);
//创建socket
Socket socket = new Socket("127.0.0.1", 8888);
OutputStream stream = socket.getOutputStream();
stream.write(line.getBytes());
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[10240];
int i = inputStream.read(bytes);
System.out.println(new String(bytes, 0, i));
socket.close();
stream.close();
}
}
}
server端
public class Server {
public static void main(String[] args) throws IOException {
while (true) {
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
InputStream is = socket.getInputStream();
int l = 88888888;
byte[] bytes = new byte[l];
int len = is.read(bytes);
System.out.println(new String(bytes, 0, len));
OutputStream os = socket.getOutputStream();
os.write("服务器 收到!".getBytes());
socket.close();
server.close();
}
}
}