我想通过socket实现一个简单的即时消息系统。 我应该有一个公交系统(或转发系统),客户A希望向客户B发送消息。
我的服务器:
sock_server = socket();
// I have shared memory to maintain a friendlist, shared by all child process
shared_friendlist[100];
...
while(1)
{
sock_client = accept();
pid_t pid = fork();
if(pid==0) // one child process for one connection req
{
}
else
{
}
}
首先我认为每个连接都会保留一个唯一的sock_client(accept()返回值),我发现我完全错了。袜子对于(子过程)而不是整个系统是唯一的。 所以我想我不能发这样的消息;
一个子进程(sock_client_a):
read(sock_client_a,buffer_message,sizeof(buffer_message));
write(sock_client_n,buffer_message,sizeof(buffer_message));
因为子进程不知道sock_client_b。 我怎么解决这个问题? 非常感谢。