package chat1;
import java.io.*; import java.util.Map;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Server {/**聊天室服务端*/
public static void main(String[] args) {
Server server = new Server();
server.start();
}
//java.net.ServerSocket类似于聊天室服务端的"总机",该"总机"上有若干的"插座"
// 每个插座可以连接一个客户端的插头,实现让多个客户端连接到同一个"总机"上
// ServerSocket有两个功能:
// 1:实例化时向系统申请服务端口(客户端先通过这个端口与总机建立连接)
// 2:一旦一个客户端与总机建立连接,总机就会分配一个"插座"与该客户端沟通
private ServerSocket serverSocket;
public Server(){
try {
System.out.println("正在启动服务端...");
//实例化ServerSocket并指定服务端口,客户端就是通过这个端口连接服务端的。
//(该端口不能与当前计算机上其他应用程序申请的端口重复,否则会抛出异常:
// java.net.BindException: Address already in use:
serverSocket = new ServerSocket(8088);
System.out.println("服务端启动完毕");
} catch (IOException e) {
e.printStackTrace();
}
}
public void start(){
try {
while(true) {
System.out.println("等待客户端连接...");
//ServerSocket上一个重要的方法: Socket accept()
// 该方法用于接受客户端的连接,此方法是一个阻塞方法,调用后方法会"卡住"
// 开始等待客户端的连接,一旦一个客户端连接,那么此方法会立即返回一个
// Socket实例然后继续往下运行(通过这个Socket就可以与刚建立连接的客户端交互了)
Socket socket = serverSocket.accept();
System.out.println("一个客户端连接了!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
相关文章
- RHCSA —— 第四节 (远程连接Linux服务器)
- chat1-Client&Server连接
- SQL优化 第七章 查询转换 1半连接和内连接转换
- 开发微信小程序时,发生 "request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。"错误的解决方案
- AndroidStudio电脑连接手机后但AndroidStudio识别不到
- Mysql Workbench 使用跳板服务器连接RDS
- 【记录】网络|没有路由器没有网线,分别使用手机或Windows电脑共享网络给ARM64开发板,应急连接
- An attempt by a client to checkout a Connection has timed out.(c3p0连接超时问题)
- Java 的动态代理实例(JDBC的数据库的连接池(DataSource))
- Android实现无线连接ADB调试