TCP通信原理
TCP发送数据
概述
-
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立了一个一个Socket对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟网络进行通信
-
Java对基于TCP协议的网络提供了良好的封装,使用Socket对象代表两端的通信端口,并通过Socket产生IO流来进行通信
-
Java为客户端提供了Socket类,为服务器端提供了ServerSocket类
-
Socket类
-
ServerSocket类
发送数据步骤
发送数据的步骤:
-
创建客户端Socket对象(Socket)
-
获取输出流,写数据
OutputStream getOutputStream() 返回此套接字的输出流。 -
释放资源
void close();
接收数据步骤
TCP接收数据的步骤
-
创建服务器端的Socket对象(ServerSocket)
-
侦听要连接到此套接字(客户端)并接受它
Socket accept(); -
获取输入流.读数据,并把数据显示在控制台
IutputStream getIutputStream() 返回此套接字的输入流。 -
释放资源
void close();
以图文和代码内容形式讲解
ClientDemo类
package Demo;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
public class ClientDemo {
public static void main(String[] args) throws IOException {
// 创建客户端Socket对象(Socket)
Socket socket =new Socket(InetAddress.getByName("sgs"),1110);
// 获取输出流,写数据(底层为字节,那么肯定字节输出流)
//获取输出流
OutputStream os = socket.getOutputStream();
BufferedOutputStream bs = new BufferedOutputStream(os);
//写数据
os.write("鸡你太美".getBytes());
// 释放资源
socket.close();
}
}
ServerDemo类
package Demo;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
// 创建服务器端的Socket对象(ServerSocket)
ServerSocket serverSocket = new ServerSocket(1110);
// 侦听要连接到此套接字(客户端)并接受它 Socket accept(int port)
Socket accept = serverSocket.accept();
// 获取输入流.读数据,并把数据显示在控制台
//获取输入流
InputStream inputStream = accept.getInputStream();
BufferedInputStream bs = new BufferedInputStream(inputStream);
//读数据
byte[] bytes = new byte[1024];
int len;
while((len=bs.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
// 释放资源
bs.close();
}
}
输出的内容: