网络编程–TCP
TCP编程:TCP是一种可靠的,基于连接的网络协议,它是面向字节流的,即从一个进程到另一个进程的二进制序列。一条TCP连接需要两个端点,这两个端点需要分别建立各自的套接字。通常一方用于发送请求和数据(称为客户端),另一方用于监听网络请求和数据(称为服务端)。
两端通信的步骤:
1、开启服务器程序,等待客户端程序的连接
2、客户端主动连接服务器,连接成功才可以进行通信。
在Java中,提供了两个类用于实现TCP通信程序:
1、服务器:java.net.ServerSocket类。创建ServerSocket对象,开启一个服务,等待可客户端的连接请求
创建ServerSocket对象调用构造函数时,要写入端口号。
public class serverSocket {
public static void main(String[] args) throws IOException {
//创建ServerSocket对象,写入端口号
ServerSocket you=new ServerSocket(1234);
//2.使用ServerSocket对象中的方法accept.获取到请求的客户端对象Socket
Socket my = you.accept();
//使用getInputStream()方法读取
InputStream inputStream = my.getInputStream();
//使用数据流,方便数据的读取
DataInputStream in = new DataInputStream(inputStream);
System.out.println(in.readUTF());
OutputStream outputStream = my.getOutputStream();
DataOutputStream out = new DataOutputStream(outputStream);
out.writeUTF("你好,收到了");
System.out.println("1234");
//释放资源
you.close();
my.close();
}
}
2、客户端:java.net.Socket类。创建Socket对象,向服务端发送连接请求,服务端响应请求,然后两者建立连接。
创建Socket对象调用构造函数时,要写入服务器的名称或者服务器的IP地址和端口号。
public class socket {
public static void main(String[] args) throws IOException {
//创建Socket对象并写入服务器主机的名称/服务器的IP地址
Socket my=new Socket("localhost",1234);
//使用对象流读取和写入数据
OutputStream outputStream = my.getOutputStream();
DataOutputStream out = new DataOutputStream(outputStream);
out.writeUTF("你好");
InputStream inputStream = my.getInputStream();
DataInputStream in = new DataInputStream(inputStream);
System.out.println(in.readUTF());
System.out.println("4321");
//释放资源
my.close();
}
}
结果如下:
先运行服务器类,开启服务器,等待客户端发送请求
Socket对象和ServerSocket对象写入的端口号要一致,不然连接。