我正在尝试使用Java创建一个简单的聊天程序。我已经创建了接受多个客户端的TCP服务器。目前客户端消息发送到服务器。
答案 0 :(得分: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;
然后,您可以使用发送和接收功能在您的客户端之间发送和接收。
答案 1 :(得分:1)
1.如何将消息从一个客户端广播到所有其他客户端?
使用订阅/通知机制
2.如何配对两个客户端。向对方发送和接收消息?
客户端也必须具有服务器套接字侦听。
<强>更新强>
您的服务器将具有某种注册表,其中所有客户都注册通知
客户端打开一个等待消息的服务器套接字
当客户端想要发送消息然后它连接到服务器,发送消息,服务器可以将消息发送到所有已注册的客户端或应该接收消息的特定客户端。此部分服务器连接到客户端的服务器套接字并发送消息
另一个选择是不在客户端打开服务器套接字,但客户端进行轮询以查看服务器是否有可用消息
答案 2 :(得分:1)
您应该在此使用多线程概念。 我认为这个链接会有所帮助。 http://pirate.shu.edu/~wachsmut/Teaching/CSAS2214/Virtual/Lectures/chat-client-server.html
答案 3 :(得分:0)