udp 相关问题

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

如何在python中关闭udp套接字

我有一个正在运行的套接字侦听器线程,它应该在满足特定条件时关闭。这是我的代码片段。 def __init__(self, arg): threading.Thread.__init__(self) ...

回答 2 投票 0

如何在c#中使用OpenFast使用Fast协议

我正在研究快速协议,所以我正在保留 UDP 包,我需要解决。 这是一些例子 我正在研究快速协议,所以我正在保留 UDP 包,我需要解决。 这是一些例子 <template id="65" name="Sample"> <uInt32 name="SenderCompID" id="49"/> <byteVector name="PacketSeqNum"/> <byteVector name="SendingTime"/> </template> 这是示例文件。 using OpenFAST.Template; using OpenFAST.Template.Types; using OpenFAST.Template.Operators; using OpenFAST; using OpenFAST.Codec; OpenFAST.Context _context = new OpenFAST.Context(); public void OpenFastX(byte[] bMCXPckt) { try { MemoryStream ms = new MemoryStream(bMCXPckt); BinaryReader br = new BinaryReader(ms, Encoding.ASCII); MessageTemplate message = new MessageTemplate("Sample", new Field[] { new Scalar("SenderCompID",FastType.U32,Operator.Copy,ScalarValue.Undefined,false), new Scalar("PacketSeqNum",FastType.ByteVector,Operator.Copy,ScalarValue.Undefined,false), new Scalar("SendingTime",FastType.ByteVector,Operator.Copy,ScalarValue.Undefined,false), }); _context.RegisterTemplate(65, message); Log.Process("Template Registered"); var decoder = new FastDecoder(_context, new BufferedStream(ms, 65535)); Log.Process("Decoder -: " + decoder.ReadMessage().GetInt(49).ToString()); } catch (Exception ex) { Log.Error(ex.Message + Environment.NewLine + ex.StackTrace.ToString()); } } 出现异常 ->“解码样本时出错” 您使用哪个 C# 库?

回答 1 投票 0

为什么Python客户端socket收到回复但在某些线程中仍然抛出异常?

这是我的Python代码。它是一个 pinger 客户端。它会向服务器发送一条消息,并期望在 1 秒内收到大写字母的回复。 从套接字导入* 导入线程 ...

回答 1 投票 0

使用 Image.FromStream() 时出现“参数无效”异常 - UDP 视频直播流

我正在尝试使用 UDP 将摄像头从 Raspberry pi 直播到 PC。我按照 Picamera2 库提供的示例代码使用 python 发送直播数据,并使用 C# Win...

回答 1 投票 0

我想创建多个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

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