多个套接字供客户端连接到
是否有可能有多个套接字,可以通过TCP或UDP在一个程序中?多个套接字供客户端连接到
例如: SocketOne:在端口4567的TCP套接字; socketTwo:端口8765处的TCP套接字; socketThree:在7643.
UDP套接字的家庭将AF_INET和地址将INADDR_ANY每个。
我绑定并侦听TCP,并为UDP绑定。
什么让我怀疑即将做到这一点是,我如何等待客户在每个套接字在一起。
我知道下面的代码将无法正常工作,但我不知道还有什么,或者怎么样,解释我想说的。
while (1)
{
connected = accept(socketOne, (struct sockaddr *)&client_addr,&sin_size);
connected = accept(socketTwo, (struct sockaddr *)&client_addr,&sin_size);
bytes_read = recvfrom(socketThree,recv_data,1024,0,(struct sockaddr *)&client_addr, &addr_len);
}
您需要select
功能:http://linux.die.net/man/2/select
更人性化:http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#select
+1链接到beej。 – mslot 2010-07-29 20:51:52
这方面有一些真实的例子。 FTP有一个控制和数据端口,它们都使用TCP,并且多媒体应用程序将为接收的每个数据流使用SIP或RTSP连接进行控制(TCP)和多个RTP和RTCP端口(UDP)。
select或poll用于UNIX和Windows上有重叠的API来做到这一点非先发制人。或者,这可以用多个线程来完成。
“是否可以有多个套接字,可以通过TCP或UDP在一个程序中?” - 当然是。但是你的代码并没有证明你在问什么 - 例如什么是“socketThree”? – 2010-07-29 20:53:42