是否可以在一个程序中拥有多个套接字,可以通过 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);
}
Run Code Online (Sandbox Code Playgroud)
你需要的select功能:http : //linux.die.net/man/2/select
更人性化:http : //beej.us/guide/bgnet/html/single/bgnet.html#select