博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
点击跳转到网站
TCP协议:
接下来我们看下面这张图来再次理解三次握手
接下来我们来使用TCP发送数据,和接收数据
一、创建一个类来发送数据,代码如下,注释已经在代码中给出
/*
TCP发送数据的步骤:
1.创建客户端的Socket对象(Socket)
2.获取输出流,写数据
3.释放资源
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
//创建客户端的Socket对象(Socket)
//Socket(InetAddress address,int port) 创建流套接字并将其连接到指定ip地址的指定端口号
// Socket socket = new Socket(InetAddress.getByName("192.168.0.124"),10000);
//Socket(String host,int port) 创建流套接字并将其连接到指定主机上的指定端口号
Socket socket = new Socket("192.168.0.124", 10000);
//获取输出流,写出数据
OutputStream os = socket.getOutputStream();
os.write("hello,TCP,我来了".getBytes());
//释放资源
socket.close();
}
}
二、接收客户端发送来的数据,显示在控制台
/*
TCP接收数据的步骤:
1.创建服务器端的Socket对象(ServerSocket)
2.获取输入流,读数据,并把数据显示在控制台上
3.释放资源
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建服务器端的Socket对象(ServerSocket)
//ServerSocket(int port)创建绑定到指定端口的服务器套接字
ServerSocket serverSocket = new ServerSocket(10000);
//Socket accept() 侦听要连接到此套接字并接受它
Socket socket = serverSocket.accept();
//获取输入流,读数据,并把数据显示到控制台
InputStream is = socket.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys, 0, len);
System.out.println("数据是:" + data);
//释放资源
serverSocket.close();
}
}
之后我们来通过一个练习,来加深TCP的使用
一、客户端发送数据,接收服务器反馈
/*
客户端:发送数据,接收服务器反馈
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
//创建客户端的Socket对象
Socket socket = new Socket("192.168.0.124", 10000);
//获取输出流,写数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello,TCP,我来了".getBytes());
//接收服务器的反馈
InputStream inputStream = socket.getInputStream();
byte[] bys = new byte[1024];
int len = inputStream.read(bys);
System.out.println("客户端:" + new String(bys, 0, len));
//释放资源
socket.close();
}
}
二、服务器:接收数据,给出反馈
/*
服务器接收数据,给出反馈
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建服务器端的Socket对象(ServerSocket)
ServerSocket serverSocket = new ServerSocket(10000);
//监听客户端连接,返回一个Socket对象
Socket socket = serverSocket.accept();
//获取输入流,读数据,并把数据显示在控制台
InputStream inputStream = socket.getInputStream();
byte[] bys = new byte[1024];
int len = inputStream.read(bys);
System.out.println("服务器:" + new String(bys, 0, len));
//给出反馈
OutputStream outputStream = socket.getOutputStream();
outputStream.write("数据已经收到".getBytes());
//释放资源
serverSocket.close();
}
}