多个插座客户端连接到 [英] Multiple sockets for clients to connect to
问题描述
是否有可能有多个插槽,既可以通过TCP或UDP在一个程序?
例如:
SocketOne:在端口4567的TCP套接字; socketTwo:在端口8765的TCP套接字; socketThree:UDP套接字在7643
该家庭将AF_INET和地址将INADDR_ANY每个
我绑定及监听TCP,只是绑定的UDP。
是什么让我怀疑是要做到这一点,我怎么在每个插座等待客户在一起。
我知道下面的code将无法正常工作,但我不知道还有什么,或者如何,解释一下我想说的。
而(1)
{
连接=接受(socketOne,(结构sockaddr *)及client_addr,&安培; sin_size); 连接=接受(socketTwo,(结构sockaddr *)及client_addr,&安培; sin_size); bytes_read缓存= recvfrom的(socketThree,recv_data,1024,0(结构sockaddr *)及client_addr,&安培; addr_len);}
您需要的选择
功能:的 http://linux.die.net/man/2/select
更人性化: http://beej.us /guide/bgnet/output/html/singlepage/bgnet.html#select
Is it possible to have multiple sockets, which can either by TCP or UDP in one program?
For example: SocketOne: TCP socket at port 4567; socketTwo: TCP socket at port 8765; socketThree: UDP socket at 7643.
The families will be AF_INET, and addresses will be INADDR_ANY for each.
I bind and listen for TCP, and just bind for UDP.
What makes me doubt being about to do this is, how do I wait for a client at each socket together.
I know that the code below won't work, but I don't know what else, or how to, explain what I'm trying to say.
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);
}
You need the select
function: http://linux.die.net/man/2/select
More user-friendly: http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#select
这篇关于多个插座客户端连接到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!