java - 如何从服务器连接两个客户端

标签 java multithreading sockets

我正在尝试使用 Java 创建一个简单的聊天程序。我已经创建了接受多个客户端的 TCP 服务器。当前客户端向服务器发送消息。

  1. 如何从一个客户端向所有其他客户端广播消息?
  2. 我如何配对两个客户端。向彼此发送和接收消息?

最佳答案

您可以让您的客户端通过简单的套接字进行通信。一旦服务器发送客户端的IP,您就可以使用客户端的IP和TCP端口(通常是443)进行通信。我知道在 C 中它是这样完成的我不确定你是否可以在你的 Java 实现中使用它但类似的东西会起作用。

//#define MSG "GET / HTTP/1.0\r\n\r\n"     
 char   buffer[128]= "0"; 

    struct sockaddr_in      sin; 
    struct hostent           *host; 
    int                           s; 

    host = gethostbyname("Clients IP");  

    memcpy(&(sin.sin_addr), host->h_addr,host->h_length); 
    //sin.sin_addr.s_addr = inet_addr("175.41.153.196");
    sin.sin_family = host->h_addrtype; 
    //sin.sin_family = AF_INET;
    sin.sin_port = htons(443);
    // Create socket port 443
    s = socket(AF_INET, SOCK_STREAM,0);
    // 1. Block for server accept 
    connect(s,  (struct sockaddr*)&sin,sizeof(sin));     
    // 2. Send "Hello world"       
    send(s,buffer,strlen(buffer)+1,0);   
    // 3. Block for receive 
    recv(s,buffer,sizeof(buffer),0);
    // Print received data


    close(s);

    //return 0;

然后您可以使用 Send 和 recv 函数在您的客户端之间发送和接收。

关于java - 如何从服务器连接两个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808331/

相关文章:

java - 小程序代码问题

java - RSS 库 'feed4j' .getPubDate() 给出 'null'

python - 如何使此任务提高 cpu 使用率?

python - MongoDB - serverStatus 非常慢

c - 如何按接口(interface)过滤多播接收套接字?

java - 在建立连接之前,accept() 方法到底是如何被阻塞的?

java - 如何在 java.Util.List<Type> 中按条件搜索元素?

java - 通过 Java 建立 MySQL 表时出错

c++ - valgrind/helgrind 在压力测试中被杀死

java.net.SocketException : Software caused connection abort: socket write error when resubmitting the request