TCP编程介绍
TCP不同于UDP一对一的连接,TCP需要创建一个服务器,多个客户端连接到服务器上进行通信。
一般来说,TCP上用户的通信都是通过服务器转发消息来完成。
服务器的搭建
服务器搭建需要做以下几个步骤:
1、指定端口 使用ServerSocket
创建服务器
2、阻塞式等待连接 accept()
3、操作:输入输出流操作
4、释放资源
简易示例如下:
public class Server {
public static void main(String[] args) throws IOException {
System.out.println("----Server----");
// 1、指定端口 创建服务器
ServerSocket server = new ServerSocket(8888);
// 2、阻塞式等待连接
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();
}
}
客户端的搭建
步骤如下:
1、建立连接,使用Socket
类创建客户端,指明服务器的IP地址以及端口
2、操作:输入输出流
3、释放资源
简易客户端示例如下:
public class Client {
public static void main(String[] args) throws IOException {
System.out.println("----Client----");
// 1、建立连接
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();
}
}
搭建聊天室
IDEA项目可以直接到此下载运行 https://github.com/yanghao1550/Chat-Room-Java
功能包含:群聊、私聊、登录/退出广播提醒
Chat.java
/**
* 在线聊天室:服务器端
*
* @Author Nino 2019/10/23
*/
public class Chat {
private static CopyOnWriteArrayList<Channel> all = new CopyOnWriteArrayList<>();
public static void main(String[] args) throws IOException{
System.out.println("----Server----");
ServerSocket server = new ServerSocket(8888);
while (true) {
Socket client = server.accept();
System