用户数据报协议是IP协议栈的消息传递协议之一。使用UDP,计算机应用程序可以将消息发送到Internet协议(IP)网络上的其他主机,而无需事先通信来设置特殊传输通道或数据路径。
概述:我已经设置了一个服务器和一个客户端,两者都尝试使用 UDP 发现彼此。当服务器启动时,它会发送一条多播消息 (239.1.1.1) 表明它处于活动状态。当cl...
我有一个自定义产品(运行 Linux)每隔几秒就会向端口 38280 发出广播数据包。 这是 Wireshark 的屏幕截图,显示了有问题的数据包。 在 Linux 虚拟机下 (Ubun...
Node.js SIP.js 设置:无法接收实时音频 - 需要指导
通信基础设施建设涉及三个关键主体 PSTN + 会话边界控制器 (SBC) 别名 ExtVoipGW (Freeswitch) 网关(Node JS) Node JS 服务器 AI 博...
我想通过 UDP 将图像从 Python 脚本发送到 Unreal 并将其加载到那里,并在下一步中创建一个纹理。我目前正在努力接收图像。 这是我的简单...
是否可以检测某些TCP或UDP流量是由Android手机本身直接生成和处理的,还是被束缚到另一台机器上? 通过HTTP,检测...
我正在开发 UDP 服务器/客户端应用程序。 为了查明是否有任何客户端已关闭,服务器会向客户端发送握手消息。然后,服务器等待客户端的响应...
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() 缺少一组必需的括号。
如何更改代码以异步接收消息? 该应用程序是用 C# WinForms 编写的 我的应用程序异步发送消息,不同步接收。我应该做什么...
C 中的 UDP 套接字 - recvfrom() 似乎没有按预期从套接字读取数据
我为此创建了一个帐户,因为我在这里束手无策: 目标是让服务器接收并读取消息“Hello from client”中的 2 个字节 - 一次 1 个字节...
是否可以将发送到 FPGA 的 UDP 数据包限制为单个主机?
我正在尝试将数据从 Windows 11 PC 上的 Qt 应用程序发送到配备 Xilinx TEMAC IP 核的 Arty A7-100T。 目前,Qt 应用程序仅包含一个开始/停止切换按钮,当
找不到主机(非权威) - Boost::asio udp 解析器
我目前正在开发一个项目,我需要解析端点,并且我正在使用 Boost Asio 的 udp 解析器。但是,我遇到以下错误:“找不到主机(非授权...
我想在 for 循环中定期向 .pcap 文件写入一个具有一个浮点成员的结构。我希望在循环迭代时生成的 .pcap 文件中包含尽可能多的 UDP 数据包。 我已经建造了...
我正在尝试使用 lwIP 库通过 UDP 发送消息。我使用的是 TMS570LS3137 微处理器。由于管理 lwIP 的内容很复杂,我通过改变来使用这个示例项目
我正在使用 C/C++ 和套接字开发一个跨平台游戏。我使用 UDP 广播(例如,如果在 C 型 LAN 地址上,则发送到 xx.xx.xx.255)来发现 LAN 游戏中附近的玩家。 ...
如何使用 IBM BlueSocket 在多个接口上侦听 SSDP 回复
我正在使用 SSDPClient 和 BlueSocket 来发现一些 NAS 设备。 现在,我发现使用股票代码,我仅在默认接口上收到响应,但在带有 t 的其他接口上却没有收到响应...
Python 中的 UDP 流:超出睡眠时间的无法解释的延迟
**我正在开发一个涉及 Python 中 UDP 流的学校项目,其中客户端 (udp_stream.py) 向服务器 (udp_stream_server.py) 发送消息。客户端脚本旨在发送特定...
我有以下 lua 函数,用于在 udp 套接字上创建、连接和发送信息。 本地 udp = ngx.socket.udp 本地函数 write_to_socket(conf, bytes) 本地 sock = udp() 袜子:
通过 Scapy 发送的 UDP 数据包不会被普通的 Python 脚本接收到
我需要通过 Scapy 发送 UDP 数据包的帮助。由于某种原因,我无法接收我发送的数据包 - 我在 Wireshark 中看到这些数据包,但在 UDP 客户端中看不到。 我正在运行一个最简单的...
boost::asio 的分段错误,带有deadline_timer 的异步udp 服务器
我在使用 boost::asio 库的服务器程序时遇到问题。 Server 类非常类似于 boost asio 教程“异步 udp-server”中介绍的类 班级...
使用 UDP Tracker 协议将片段请求发送到 Udp 对等点
我正在构建自己的 Bit-torrent 客户端(在 python 中),其中使用 UDP 跟踪器协议我获得了对等点列表(IP 和端口),现在我不知道如何将片段请求发送到该对等点并接收...