serverSocket与Socket的简单使用

文章展示了如何使用Java的ServerSocket和Socket类来实现一个简单的服务器和客户端通信。Server类负责监听8080端口,等待客户端连接,而Client类则尝试连接到服务器。当客户端连接成功时,服务器会打印客户端的IP地址。

1.Server类

public class Server {
    /**
     *  java.net.ServerSocket
     *  ServerSocket主要有两个作用
     *  1:向系统申请服务端口,客户端就是通过这个端口与服务端建立连接的
     *  2:监听端口等待客户端的连接
     *    一旦一个客户端与服务端建立连接,此时会创建一个Socket与该客户端交互
     */
    private ServerSocket serverSocket;


    public Server(){
        try {
             /*
                实例化ServerSocket时要指定服务端口,如果该端口已经被操作
                系统其他程序占用时会抛出异常:
                java.net.BingException():address already in use
             */
            serverSocket = new ServerSocket(8080);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public void start(){
        try {
            System.out.println("等待一个客户端连接");
            Socket socket = serverSocket.accept();
            System.out.println("客户端:"+socket.getInetAddress().getHostAddress()+"上线!");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        Server server = new Server();
        server.start();
    }
}

2.Client类

public class Client {
    /*
     java.net.Socket 套接字
     该类封装了TCP协议的通讯细节,我们使用它可以与远端计算机建立连接并进行
     可靠的传输通讯.

     Socket:插座
  */
    private Socket socket;

    public Client(){
        try {
            System.out.println("正在连接服务器...");
             /*
                Socket的实例化时需要传入两个参数:
                1:服务器的IP地址
                2:服务端应用程序打开的端口
                我们通过IP地址可以找到服务器在网络中的位置,通过端口找到运行在
                服务器上的服务端应用程序
            */
            socket=new Socket("localhost",8080);
            System.out.println("连接成功..");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        Client client = new Client();
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值