我目前有一个TCP服务器设置,它可以接受来自客户端的连接并回显客户端输入的任何内容。如何让多个客户端连接到服务器并将其输入发送到所有客户端?
看起来我应该分叉,但我不完全确定如何......
在服务器上,我应该从accept(或listen?)开始一个无限循环,当有新连接时它会分叉吗?然后在子进程中,我将不得不从先前的进程关闭套接字并连接到新的进程,但我再次不确定。
关于forks和socket操作,伪代码会是什么样子?我猜:
while(1) //before connection or accept?
pid = fork()
if(pid==0)
// open socket from client
// run the rest of the code
// end process when client disconnects
else
// close socket from client
答案 0 :(得分:3)
您可以在互联网上找到许多例子,首先我发现: http://www.tutorialspoint.com/unix_sockets/socket_server_example.htm
请记住,每个客户端方法的进程(或线程)不能很好地扩展。 现代服务器使用非阻塞主调度循环。 看看libevent。
以下是使用libevent的echo服务器示例: https://github.com/jasonish/libevent-examples/tree/master/echo-server
答案 1 :(得分:0)
结果伪代码如下:
while(1) //before listen
pid = fork; //right after accept
if(fork>0)
close sd2 ( sd2 = accept(....) )
continue
else
run the rest of the program