相关疑难解决方法(0)

为什么可以同时在TCP和UDP上使用相同的端口?

我在搜索时看到,可以在同一台计算机上使用两个不同的程序,使用相同的端口和相同的网络接口通过网络进行通信,前提是使用UDP和另一个TCP.但是我没有得到一个很好的解释,它是如何实际工作的以及为什么这是可能的?

多个程序是否也可以使用相同的UDP端口,因为UDP不会在对等体之间建立真正的连接,而只是将数据包发送到一个地址?我知道TCP不可能,因为它在服务器和客户端之间创建了一个同步连接,但UDP怎么样?

如果可能,请详细说明,或链接一篇关于该主题的好文章.

port networking udp tcp network-protocols

9
推荐指数
2
解决办法
8585
查看次数

使用Connect(),send(),recv和UDP套接字时出现问题

对于我的Uni任务,我必须创建一个快节奏的网络游戏,因此选择使用UDP而不是TCP.我知道在UDP和TCP编程方面存在很多差异,并且已经阅读了关于winsock的MSDN文档的大部分相关部分.在MSDN上,它声明通过connect()函数创建UDP套接字应该将套接字绑定到指定的地址和端口,因此可以使用send()和recv()函数与创建的套接字.

对于我的应用程序,我创建一个客户端并使用loopback地址使用connect(),该地址通过send()函数发送大量数据包.客户端在调用select()之后,然后接收它发出的数据包.但是我从recv()函数得到的结果是SOCKET_ERROR,使用WSAGetLastError()的错误描述是"现有连接被远程主机强行关闭".

如果我使用bind()函数并使用sendto()通过环回地址发送数据,我recv()数据包没有任何错误...有谁知道为什么connect()函数没有做它应该做的事情,有没有人能够使用UDP套接字与connect()函数?

c c++ winsock2

4
推荐指数
1
解决办法
2万
查看次数

没有bind()的UDP客户端不接收数据

我从二进制文件中查看了UDP客户端程序,我能够将一个UDP数据包发送到UDP服务器,这是我的嵌入式设备,该设备回送UDP消息.

在这个PC-UDP客户端代码中,它应该得到回显的消息,但我没有得到任何回声.所以我在我的PC上运行一个UDP服务器,它监听传入的数据并打印它,我能够看到来自我的嵌入式设备的回显消息.

当我在代码中的while(1)循环之前添加这些行时,现在我能够看到Echoed返回消息.

 //setup address structure
memset((char *) &si_server, 0, sizeof(si_server));
si_server.sin_family = AF_INET;
si_server.sin_port = htons(PORT);
si_server.sin_addr.S_un.S_addr = INADDR_ANY;

if( bind(s ,(struct sockaddr *)&si_server , sizeof(si_server)) == SOCKET_ERROR)
{
    printf("Bind failed with error code : %d" , WSAGetLastError());
    exit(EXIT_FAILURE);
}
puts("Bind done");
Run Code Online (Sandbox Code Playgroud)

有关可能导致问题的原因的任何想法?

c sockets udp udpclient winsock2

2
推荐指数
1
解决办法
6336
查看次数

标签 统计

c ×2

udp ×2

winsock2 ×2

c++ ×1

network-protocols ×1

networking ×1

port ×1

sockets ×1

tcp ×1

udpclient ×1