多个插座客户端连接到 [英] Multiple sockets for clients to connect to

查看:245
本文介绍了多个插座客户端连接到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能有多个插槽,既可以通过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆