2010-07-29 121 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來做到這一點非先發制人。或者,這可以用多個線程來完成。

相關問題