2010-07-29 87 views
2

是否有可能有多个套接字,可以通过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); 

} 
+0

“是否可以有多个套接字,可以通过TCP或UDP在一个程序中?” - 当然是。但是你的代码并没有证明你在问什么 - 例如什么是“socketThree”? – 2010-07-29 20:53:42

回答

1

选择

+0

你先来了。但是,这仍然是需要做的。 – mslot 2010-07-29 20:50:43

1

这方面有一些真实的例子。 FTP有一个控制和数据端口,它们都使用TCP,并且多媒体应用程序将为接收的每个数据流使用SIP或RTSP连接进行控制(TCP)和多个RTP和RTCP端口(UDP)。

select或poll用于UNIX和Windows上有重叠的API来做到这一点非先发制人。或者,这可以用多个线程来完成。

相关问题