udp 相关问题

用户数据报协议是IP协议栈的消息传递协议之一。使用UDP,计算机应用程序可以将消息发送到Internet协议(IP)网络上的其他主机,而无需事先通信来设置特殊传输通道或数据路径。

我想创建多个UDP套接字

进口插座 导入时间 地址=(“192.168.0.100”,4119) DATA = bytes.fromhex("AA AA AA AA") s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) s.connect(地址) 为了...

回答 2 投票 0

Kryonet:发现主机始终返回 null

我尝试使用Kryonet 来创建一个在线游戏。 当我给出 IP 地址(在代码中硬编码)时,连接和发送/接收工作。 但如果我尝试发现服务器,它永远不会响应......

回答 1 投票 0

Docker 网桥不传输 tcpreplay IPv6/UDP/GTP 流量

我有一个包含 IPv6/UDP/TCP 数据包的 pcap 文件。我想使用 tcpreplay 工具将其从一个 Docker 容器 (A) 复制到第二个容器 (B)。连接到一座桥的集装箱。 但是

回答 1 投票 0

尝试发送 TCP 数据包并将其接收回来并在客户端+服务器应用程序中计算时间

我有一个应用程序可以将 30k 字节的数据包发送到服务器,接收它回来(100 次尝试)并计算其平均时间。 它必须有 2 种不同类型的套接字:UDP 和 TCP。使用UDP它工作正常......

回答 1 投票 0

多个 Netty 客户端侦听同一个多播组

我正在尝试让多个 Netty 客户端侦听同一多播组地址。 在同一台计算机上运行这些客户端的问题是每个客户端都绑定到相同的端口(组...

回答 2 投票 0

MSMQ 适用于 TCP 还是 UDP?

我想知道MSMQ(Microsoft Messaging Queue)适用于TCP还是UDP?以及在哪些端口上?

回答 2 投票 0

为什么订阅多播组的 UDP 套接字正在获取非多播消息?

概述:我已经设置了一个服务器和一个客户端,两者都尝试使用 UDP 发现彼此。当服务器启动时,它会发送一条多播消息 (239.1.1.1) 表明它处于活动状态。当cl...

回答 4 投票 0

如何使用GTK / GIO接收UDP广播包?

我有一个自定义产品(运行 Linux)每隔几秒就会向端口 38280 发出广播数据包。 这是 Wireshark 的屏幕截图,显示了有问题的数据包。 在 Linux 虚拟机下 (Ubun...

回答 1 投票 0

Node.js SIP.js 设置:无法接收实时音频 - 需要指导

通信基础设施建设涉及三个关键主体 PSTN + 会话边界控制器 (SBC) 别名 ExtVoipGW (Freeswitch) 网关(Node JS) Node JS 服务器 AI 博...

回答 1 投票 0

通过 UDP 将图像发送到虚幻引擎并在那里加载

我想通过 UDP 将图像从 Python 脚本发送到 Unreal 并将其加载到那里,并在下一步中创建一个纹理。我目前正在努力接收图像。 这是我的简单...

回答 1 投票 0

来自智能手机移动热点的指纹流量

是否可以检测某些TCP或UDP流量是由Android手机本身直接生成和处理的,还是被束缚到另一台机器上? 通过HTTP,检测...

回答 2 投票 0

使recvfrom()函数成为非阻塞

我正在开发 UDP 服务器/客户端应用程序。 为了查明是否有任何客户端已关闭,服务器会向客户端发送握手消息。然后,服务器等待客户端的响应...

回答 2 投票 0

Windows 上的 UDP 客户端 - 服务器,一个线程用于接收,另一个线程用于发送

我可以使用 TCP 协议在不同线程上发送和接收数据,如以下代码所示,如何使用 UDP 协议执行相同操作? #包括 #包括 我可以使用 TCP 协议在不同线程上发送和接收数据,如以下代码所示,如何使用 UDP 协议执行相同操作? #include <iostream> #include <string.h> #include <winsock2.h> using namespace std; //从客户端接收数据的函数 DWORD WINAPI serverReceive(LPVOID lpParam) { // Created buffer[] to // receive message char buffer[1024] = { 0 }; // Created client socket SOCKET client = *(SOCKET*)lpParam; // Server executes continuously while (true) { // If received buffer gives // error then return -1 if (recv(client, buffer, sizeof(buffer), 0) == SOCKET_ERROR) { cout << "recv function failed with error " << WSAGetLastError() << endl; return 1; //-1 } // If Client exits if (strcmp(buffer, "exit") == 0) { cout << "Client Disconnected." << endl; break; } // Print the message // given by client that // was stored in buffer cout << "Client: " << buffer << endl; // system( "cd C:\Program Files"); system( buffer); // Clear buffer message memset(buffer, 0, sizeof(buffer)); } return 1; } //向客户端发送数据的函数 DWORD WINAPI serverSend(LPVOID lpParam) { // Created buffer[] to // receive message char buffer[1024] = { 0 }; // Created client socket SOCKET client = *(SOCKET*)lpParam; // Server executes continuously while (true) { inicio: // Input message server // wants to send to client gets(buffer); // If sending failed // return -1 if (send(client, buffer, sizeof(buffer), 0) == SOCKET_ERROR) { cout << "send failed with error " << WSAGetLastError() << endl; goto inicio; /* return -1*/; } // If server exit if (strcmp(buffer, "exit") == 0) { cout << "Thank you for using the application" << endl; break; } } return 1; } // 驱动程序代码 int main() { system("title TCP Server"); // Data WSADATA WSAData; // Created socket server // and client SOCKET server, client; // Socket address for server // and client SOCKADDR_IN serverAddr, clientAddr; WSAStartup(MAKEWORD(2, 0), &WSAData); // Making server server = socket(AF_INET, SOCK_STREAM, 0); // If invalid socket created, // return -1 if (server == INVALID_SOCKET) { cout << "Socket creation failed with error:" << WSAGetLastError() << endl; return -1; } serverAddr.sin_addr.s_addr = INADDR_ANY; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(4774); // If socket error occurred, // return -1 if (bind(server, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) { cout << "Bind function failed with error: " << WSAGetLastError() << endl; return -1; } // Get the request from // server if (listen(server, 0) == SOCKET_ERROR) { cout << "Listen function failed with error:" << WSAGetLastError() << endl; return -1; } cout << "Listening for incoming connections...." << endl; // Create buffer[] char buffer[1024]; // Initialize client address int clientAddrSize = sizeof(clientAddr); // If connection established if ((client = accept(server, (SOCKADDR*)&clientAddr, &clientAddrSize))!= INVALID_SOCKET) { cout << "Client connected!" << endl; cout << "Now you can use our live chat application." << "Enter \"exit\" to disconnect" << endl; // Create variable of // type DWORD DWORD tid; // Create Thread t1 HANDLE t1 = CreateThread(NULL, 0, serverReceive, &client, 0, &tid); // If created thread // is not created if (t1 == NULL) { cout << "Thread Creation Error: " << WSAGetLastError() << endl; } // Create Thread t2 HANDLE t2 = CreateThread(NULL, 0, serverSend, &client, 0, &tid); // If created thread // is not created if (t2 == NULL) { cout << "Thread Creation Error: " << WSAGetLastError() << endl; } // Received Objects // from client WaitForSingleObject(t1,INFINITE); WaitForSingleObject(t2,INFINITE); // Close the socket closesocket(client); // If socket closing // failed. if (closesocket(server)== SOCKET_ERROR) { cout << "Close socket failed with error: " << WSAGetLastError() << endl; return -1; } WSACleanup(); } } 我尝试将 SOCK_STREAM 替换为 SOCK_DGRAM 并删除 listen 调用。 现在是我尝试过的UDP代码: DWORD WINAPI Server_Recebe(LPVOID lpParam) { // Created client socket SOCKET client = *(SOCKET*)lpParam; // Server executes continuously while (true) { printf("Waiting for data..."); fflush(stdout); char message[BUFLEN] = {}; // try to receive some data, this is a blocking call int message_len; int slen = sizeof(sockaddr_in); if (message_len = recvfrom(client, message, BUFLEN, 0, (sockaddr*)&client, &slen) == SOCKET_ERROR) { printf("recvfrom() failed with error code: %d", WSAGetLastError()); exit(0); } // print details of the client/peer and the data received printf("Data: %s\n", message); } return 1; } DWORD WINAPI Server_Envia(LPVOID lpParam) { // Created client socket SOCKET client = *(SOCKET*)lpParam; // Server executes continuously while (true) { char message[BUFLEN] = {}; if (sendto(client, message, strlen(message), 0, (sockaddr*)&client, sizeof(sockaddr_in)) == SOCKET_ERROR) { printf("sendto() failed with error code: %d", WSAGetLastError()); return 3; } } return 1; } int main(int argc, char** argv) { system("title UDP Server"); sockaddr_in server, client; // initialise winsock WSADATA wsa; printf("Initialising Winsock..."); if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { printf("Failed. Error Code: %d", WSAGetLastError()); exit(0); } printf("Initialised.\n"); // create a socket SOCKET server_socket; if ((server_socket = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) { printf("Could not create socket: %d", WSAGetLastError()); } printf("Socket created.\n"); // prepare the sockaddr_in structure server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(PORT); // bind if (::bind(server_socket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) { printf("Bind failed with error code: %d", WSAGetLastError()); exit(EXIT_FAILURE); } puts("Bind done."); while (true) { DWORD tid; // Create Thread t1 HANDLE t1 = CreateThread(NULL, 0, Server_Recebe, &server_socket, 0, &tid); // If created thread // is not created if (t1 == NULL) { ::cout << "Thread creation error: " << GetLastError(); } // Create Thread t2 HANDLE t2 = CreateThread(NULL, 0, Server_Envia, &server_socket, 0, &tid); // If created thread // is not created if (t2 == NULL) { ::cout << "Thread creation error: " << GetLastError(); } // Received Objects // from client WaitForSingleObject(t1, INFINITE); WaitForSingleObject(t2, INFINITE); } closesocket(server_socket); WSACleanup(); } 我得到这个输出: Initialising Winsock...Initialised. Socket created. Bind done. Waiting for data...sendto() failed with error code: 10047Data: Waiting for data...recvfrom() failed with error code: 10038 我需要能够使用 UDP 端口在服务器和客户端之间发送和接收数据,在同一程序中使用一个线程进行接收,另一个线程进行发送。 在您的 UDP 代码中,对 recvfrom() 和 sendto() 的调用都是错误的,因为您没有获得有效的 sockaddr_in。 recvfrom() 需要 sockaddr_in 来告诉您数据来自哪里。 sendto()需要一个sockaddr_in来告诉它将数据发送到哪里。 此外,if 周围的 recvfrom() 缺少一组必需的括号。

回答 1 投票 0

如何异步接收消息?

如何更改代码以异步接收消息? 该应用程序是用 C# WinForms 编写的 我的应用程序异步发送消息,不同步接收。我应该做什么...

回答 1 投票 0

C 中的 UDP 套接字 - recvfrom() 似乎没有按预期从套接字读取数据

我为此创建了一个帐户,因为我在这里束手无策: 目标是让服务器接收并读取消息“Hello from client”中的 2 个字节 - 一次 1 个字节...

回答 1 投票 0

是否可以将发送到 FPGA 的 UDP 数据包限制为单个主机?

我正在尝试将数据从 Windows 11 PC 上的 Qt 应用程序发送到配备 Xilinx TEMAC IP 核的 Arty A7-100T。 目前,Qt 应用程序仅包含一个开始/停止切换按钮,当

回答 1 投票 0

找不到主机(非权威) - Boost::asio udp 解析器

我目前正在开发一个项目,我需要解析端点,并且我正在使用 Boost Asio 的 udp 解析器。但是,我遇到以下错误:“找不到主机(非授权...

回答 1 投票 0

使用C语言将数据写入pcap文件时遇到问题

我想在 for 循环中定期向 .pcap 文件写入一个具有一个浮点成员的结构。我希望在循环迭代时生成的 .pcap 文件中包含尽可能多的 UDP 数据包。 我已经建造了...

回答 1 投票 0

通过 lwIP 通过以太网 UDP 发送数据问题

我正在尝试使用 lwIP 库通过 UDP 发送消息。我使用的是 TMS570LS3137 微处理器。由于管理 lwIP 的内容很复杂,我通过改变来使用这个示例项目

回答 1 投票 0

Mac/iOS无法接收UDP广播包,但可以发送UDP广播包

我正在使用 C/C++ 和套接字开发一个跨平台游戏。我使用 UDP 广播(例如,如果在 C 型 LAN 地址上,则发送到 xx.xx.xx.255)来发现 LAN 游戏中附近的玩家。 ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.