此文件中描述了Client和Server连接的过程
一、Server:
服务端用ServerSocket对象开启一个端口。并用while循环调用ServerSocket对象的accept()
方法等待客户端连接。
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(); } } }
二、Client:
客户端用new Socket("localhost",8088)连接服务端
package chat1; import java.io.*; import java.net.Socket; /**聊天室的客户端*/ public class Client { //java.net.Socket 单词释义:"插座"。封装了TCP协议的通讯细节,使用它可以与服务端建立 //连接并进行通讯 private Socket socket; //构造方法,用于初始化客户端 public Client(){ try { /*Socket常用构造器: Socket(String host,int port) 创建Socket对象时,就会让客户端贺服务端建立连接,此时需要指定服务端的IP地址和端口。 如果与服务端连接失败,则会抛出异常 注: IP地址中, "localhost":表示本机,"127.0.0.1":也表示本机 */ System.out.println("正在连接服务端..."); /* Windows系统查看自己电脑的IP地址:win+r 键盘上(窗口键+R) 2:输入cmd 打开控制台 3:输入ipconfig 查看IP地址 Mac系统查看IP地址: 步骤1:打开【终端】 步骤2:输入:/sbin/ifconfig */ socket = new Socket("localhost",8088); System.out.println("与服务连接成功!"); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { Client client = new Client(); } }
标签:chat1,java,Socket,ServerSocket,连接,服务端,客户端 From: https://www.cnblogs.com/zhaoyongqi/p/18225163