基于TCP协议的Socket编程
创建TCP服务端步骤
- 创建一个ServerSocket对象
- 调用accept()方法阻塞式接受客户端请求
- 从Socket中获取I/O流
- 对I/O流进行读写操作,完成与客户端的交互
- 关闭I/O流和Socket
创建TCP客户端步骤
- 创建一个Socket对象
- 从Socket中获取I/O流
- 对I/O流进行读写操作,完成与服务端的交互
- 关闭I/O流和Socke
Server.java
package com.cax.tcp;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
System.out.println("----Server----");
//1.指定端口 使用ServerSocket创建服务器
ServerSocket server = new ServerSocket(8888);
//2.阻塞式等待连接 accept
Socket client = server.accept();
System.out.println("一个客户端建立了连接");
//3.输入、输出流操作
DataInputStream dis = new DataInputStream(client.getInputStream());
String data = dis.readUTF();
System.out.println(data);
//4.释放资源
dis.close();
client.close();
server.close();
}
}
Client.java
package com.cax.tcp;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("----Client----");
//1.建立连接: 使用Socket创建客户端 +服务的地址和端口
Socket client = new Socket("localhost", 8888);
//2.输入输出流操作
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
String data = "hello";
dos.writeUTF(data);
dos.flush();
//3.释放资源
dos.close();
client.close();
}
}