我正在寻找类似的东西List<T>,这将允许我有多个T.例如:List<TabItem, DataGrid, int, string, ...> = new List<TabItem, DataGrid, int, string, ...>().
是否可以在一个程序中拥有多个套接字,可以通过 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) 根据我从这个帖子得到的答案,我创建了这个:
//Server
sock_init(); //from SFL, see http://legacy.imatix.com/html/sfl/
timeout = 50000;
serv_sock_input[0] = TCP(1234);
serv_sock_input[1] = UDP(9876);
input_protocols[0] = "tcp";
input_protocols[1] = "udp";
while (1)
{
FD_ZERO(&sock_set);
for (x = 0; x<number_of_inputs; x++)
{
FD_SET(serv_sock_input[x], &sock_set);
}
select_timeout.tv_sec = timeout;
select_timeout.tv_usec = 0;
if (select(0, &sock_set, NULL, NULL, &select_timeout) == 0)
printf("No requests");
else
{
for (x = 0; x<number_of_inputs; x++)
{
if (FD_ISSET(serv_sock_input[x],&sock_set))
{
printf("\nRequest on port %d: \n", x);
if ((strcmp(input_protocols[x],"tcp")) == 0) //in this case, 0 …Run Code Online (Sandbox Code Playgroud)