如何接受多个客户端到TCP服务器?

时间:2014-12-15 21:12:45

标签: c sockets tcp client-server

我目前有一个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

2 个答案:

答案 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