首页 > 其他分享 >chat1

chat1

时间:2024-05-31 19:22:44浏览次数:13  
标签:chat1 java Socket ServerSocket 连接 服务端 客户端

此文件中描述了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

相关文章