Java聊天室之实现运行服务器与等待客户端连接

下面是详细的讲解。

一、实现运行服务器

  1. 开启一个Java项目,在项目中创建一个ServerSocket对象,指定监听的端口号。这里以6666为例:
// 创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(6666);
  1. 使用accept()方法等待客户端连接。该方法会一直阻塞,直到有客户端连接,然后返回一个表示已连接的Socket对象。
// 使用accept()方法等待客户端连接,返回已连接的Socket对象
Socket socket = serverSocket.accept();
  1. 在连接成功后,可以通过获得的Socket对象获取到该客户端的IP地址和端口号,并在控制台打印出来作为提示。
// 获取客户端的IP地址和端口号
String ip = socket.getInetAddress().getHostAddress();
int port = socket.getPort();

// 打印出连接信息
System.out.println("客户端" + ip + ":" + port + "已连接");

二、等待客户端连接

  1. 创建一个客户端程序,在该程序中创建一个Socket对象,并指定服务器的IP地址和端口号,这里以本地IP和6666端口为例:
// 创建Socket对象,指定服务器的IP地址和端口号
Socket socket = new Socket("127.0.0.1", 6666);
  1. 在成功连接服务器后,可以通过获取到的Socket对象获得服务器的IP地址和端口号,并在控制台打印出来作为提示。
// 获取服务器的IP地址和端口号
String ip = socket.getInetAddress().getHostAddress();
int port = socket.getPort();

// 打印出连接信息
System.out.println("已连接服务器" + ip + ":" + port);

示例说明一

下面是一个实现运行服务器的完整示例:

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        // 创建ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(6666);
        System.out.println("服务器已启动,等待客户端连接");

        // 使用accept()方法等待客户端连接
        Socket socket = serverSocket.accept();

        // 获取客户端的IP地址和端口号
        String ip = socket.getInetAddress().getHostAddress();
        int port = socket.getPort();

        // 打印出连接信息
        System.out.println("客户端" + ip + ":" + port + "已连接");

        // 关闭服务器Socket
        serverSocket.close();
    }
}

在该示例中,开启了一个端口为6666的ServerSocket对象,并使用accept()方法等待客户端连接。当有客户端连接成功时,获取到客户端的IP地址和端口号,并打印出提示信息。最后关闭了服务器Socket。

示例说明二

下面是一个等待客户端连接的完整示例:

import java.io.IOException;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        // 创建Socket对象,指定服务器的IP地址和端口号
        Socket socket = new Socket("127.0.0.1", 6666);
        System.out.println("已连接服务器");

        // 获取服务器的IP地址和端口号
        String ip = socket.getInetAddress().getHostAddress();
        int port = socket.getPort();

        // 打印出连接信息
        System.out.println("服务器" + ip + ":" + port + "已连接");

        // 关闭客户端Socket
        socket.close();
    }
}

在该示例中,创建了一个Socket对象,并指定了服务器的IP地址和端口号。在连接成功后,获取到服务器的IP地址和端口号,并打印出提示信息。最后关闭了客户端Socket。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java聊天室之实现运行服务器与等待客户端连接 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • WinRAR在DOS命令行下压缩/解压缩的使用方法

    下面是WinRAR在DOS命令行下压缩/解压缩的使用方法的完整攻略。 一、WinRAR简介 WinRAR是一款常用的文件压缩解压缩软件,支持多种压缩格式,包括RAR、ZIP、7-Zip、CAB、ARJ、ISO等。在Windows界面下,我们可以通过WinRAR的图形用户界面来进行压缩解压缩操作,但是WinRAR也支持在DOS命令行下进行文件压缩解压缩操作。 …

    other 2023年6月26日
    00
  • 详解Spring系列之@ComponentScan批量注册bean

    详解Spring系列之@ComponentScan批量注册bean 1. 简介 在Spring框架中,使用@ComponentScan注解可以实现批量注册bean。@ComponentScan是一个元注解,用于指示Spring框架扫描指定的包,并自动注册被@ComponentScan注解标记的类为Spring管理的bean。 2. 使用方式 使用@Compo…

    other 2023年6月28日
    00
  • Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)

    下面是详细的讲解。 Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign) 在Vue项目中使用了AntDesign组件库的Table组件,在表格的某些字段需要可以快捷的执行一些操作,此时需要一种右键菜单来提供一些行内的操作选项。 前置条件 在本文中实现右键菜单的方法需满足以下条件: Vue.js 2.x AntDesign Vue…

    other 2023年6月27日
    00
  • 使用xssfworkbook读取excel

    以下是详细讲解“使用XSSFWorkbook读取Excel的完整攻略,过程中包含两个示例说明: 使用XSSFWorkbook读取Excel Apache POI是一个用于读写Microsoft Office格式文件的Java库,其中包括Excel文件。XSSFWorkbook是POI库中用于读取和写入.xlsx格式文件的类。本攻略将介绍如何使用XSSFWor…

    other 2023年5月10日
    00
  • Qt创建项目实战之手把手创建第一个Qt项目

    创建Qt项目的步骤如下: 1. 打开Qt Creator 在Qt目录下,找到Qt Creator程序并打开。 2. 创建项目 在Qt Creator中,点击”File”->”New File or Project”,弹出”New Project”对话框。 3. 选择项目类型 在”New Project”对话框中,选择”Application”项目类型,…

    other 2023年6月27日
    00
  • Spring Cloud @RefreshScope 原理及使用

    Spring Cloud @RefreshScope 原理及使用 什么是 @RefreshScope 在使用 Spring Cloud 进行应用程序开发时,我们经常会遇到一些需要在应用程序运行时更新的配置参数,比如数据库连接字符串、缓存配置等等。为了避免每次修改这些参数之后需要重启应用程序,我们可以通过使用 Spring Cloud 提供的 @Refresh…

    other 2023年6月26日
    00
  • 微信小程序wx:for的简单使用

    以下是关于微信小程序wx:for的详细使用攻略。 什么是wx:for wx:for是微信小程序中的一个列表渲染指令,用于循环渲染一个数组或对象中的数据。它类似于JavaScript中的for循环,可以根据数据的长度自动渲染相应的列表项。 如何使用wx:for 以下是使用wx:for的步骤: 在<view>或<block>标签中添加wx…

    other 2023年5月8日
    00
  • Vue组件二次封装的一些实用技巧总结

    下面是详细的“Vue组件二次封装的一些实用技巧总结”的攻略: 什么是Vue组件二次封装 Vue组件二次封装,指的是在已有组件的基础上,再进行一层封装,以满足更多的业务需求。具体来说,二次封装可以包括以下方面: 重写组件的props属性,添加或修改某些属性; 重新定义组件内部的数据或方法; 使用Vue插槽(slot)机制,自定义组件的具体渲染方式; 添加钩子函…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部