Articles of udp

通过使套接字事件驱动来使udp套接字非阻塞

我正在尝试使我的套接字“基于事件”。 以下是我的尝试: VOID createServerSocket() { WSADATA wsa; //Initialise winsock// if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) { //"WinSock Initialization FAILED", } //Create a socket// SOCKET newSocketIdentifier; SOCKADDR_IN newSocket; if((newSocketIdentifier = socket(AF_INET , SOCK_DGRAM , 0 )) == INVALID_SOCKET) { //Socket Creation Failed } //Socket Created// //Prepare the sockaddr_in structure// newSocket.sin_family = AF_INET; newSocket.sin_addr.s_addr = INADDR_ANY; newSocket.sin_port = htons(8888); […]

UDP recvfrom不工作

我有UDP服务器程序,从端口7888接收数据。服务器代​​码如下。 //UDPIPV4Server.h #pragma once #include <iostream> #include <string> #include <winsock2.h> #include <windows.h> #include <Ws2tcpip.h> using std::string; using std::cout; using std::endl; using std::cerr; class UDPIPV4Server { public: UDPIPV4Server(); ~UDPIPV4Server(void); UINT type; string mac_address; UINT port; int socket_var; struct sockaddr_in si_server, si_client; int Config(void); int RecvData(char* recv_buffer, int buf_size,string *ip_addr); }; //UDPIPV4Server.cpp int UDPIPV4Server::Config(void) { WSADATA wsadata; […]

在Windows Server,Java中监视UDP数据包丢失

我的Java应用程序通过UDP接收数据。 它使用数据进行在线数据挖掘任务。 这意味着接收每个数据包并不重要,这首先使得UDP的select合理。 另外,数据通过局域网传输,所以物理networking应该是合理可靠的。 无论如何,我无法控制协议的select或所包含的数据。 不过,我担心可能由于应用程序本身的过载和处理时间过长而导致丢包。 我想知道这些事情发生的频率以及丢失了多less数据。 理想情况下,我正在寻找一种方法来监视生产系统中的丢包情况。 但部分解决scheme也是受欢迎的。 我意识到不可能总是知道UDP数据包丢失(不控制数据包内容)。 我正在考虑沿着OS收到的数据包的一些东西,但从来没有到达应用程序; 或者是应用程序内部的一些聪明的解决scheme,例如快速读取线程,在客户端繁忙时丢弃数据。 我们正在Windows Server 2003或2008下进行部署。

TCP和UDP使用不同的OS缓冲区?

大家好。 这是情况。 我有我的程序使用端口8888。 我在该端口上构build一个TCP和一个UDP侦听器。 (这可以做,C#允许,因为它们是两个不同的协议) 我的问题是 如果networkingstream量非常繁忙,TCP套接字可能拒绝或发信号通知对方停止发送事情,这就是所谓的拥塞控制,对不对? 所以如果TCP控制拥塞,其他的一端可能不会发送更多的数据,在这个“TCP静默期”,UDP通道应该没有那么多的stream量,对吧? 我想弄清楚TCPstream量会不会影响UDPstream量呢?

无法分配请求的地址,C ++ UDP套接字

下面的代码是从http://digitalpbk.blogspot.com/2007/10/unix-networking-sockets-udp-transmitter.html ,它运行良好的本地主机,但是当我改变它到我的IP它给出了错误 bind():无法分配请求的地址 我一直在寻找一个解决scheme几个小时,所以任何帮助将是伟大的 int main(void) { struct sockaddr_in sin; char msg[10000]; int ret; int sin_length; int s; s = socket(AF_INET, SOCK_DGRAM, 0); if(!s) { perror("socket()"); return 0; } sin.sin_family = AF_INET; sin.sin_port = htons(65000); sin.sin_addr.s_addr = inet_addr("24.212.11.211"); // —————- This line —————- if(bind(s, (struct sockaddr *)&sin, sizeof(sin))) { perror("bind()"); return 1; } do // […]

在单个udp服务器中处理40个客户端的可能的对象

我正在udp服务器/ cient应用程序上工作。 我希望我的服务器一次能够处理40个客户端。 现在我正在使用创build一个连续接收数据的接收线程和一个发送线程来发送数据的方法(如果需要的话)。 由于套接字队列足够大,可以从40个客户端缓冲数据,所以我只使用一个接收线程。 什么可能是其他可能的方式来实现这种单一的服务器多客户端应用

iperf UDP服务器启动错误,绑定失败:操作不允许

OS:Windows 8,工具:Jperf,内部工具:iperf 我想启动UDP服务器侦听器。 使用的命令: – iperf -s -u -P 0 -i 1 -p 5001 -l 1470 -fk -t 10 监听UDP端口5001的服务器 接收1470字节的数据报 UDP缓冲区大小:64.0 KByte(默认) 错误如下: – 绑定失败:操作不允许 recvfrom失败:无效的参数 注释 :- 1)我的Windows防火墙是closures的 2)防病毒是closures的 在这里要求访问Windows UDP端口的任何registry更改? 任何想法 ?

Python:在Windows上获取UDP广播/ socket.recvcmsg()的发件人

我使用socket.recvmsg()来获取UDP广播消息的数据和发送者的IP地址。 这在Linux上正常工作,但是这种方法在Windows(Python 3.3)上不可用。 我如何获取发件人的IP地址? from socket import * fd = socket(AF_INET, SOCK_DGRAM) fd.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) fd.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) data, _, _, addr = fd.recvmsg(4096) # <- how to achieve this without recvmsg? host, upd_port = addr

使用asynchronous套接字处理多个客户端的服务器

我已经开发了一个使用multithreading的单服务器多客户端udp应用程序。 我想切换到一个单一的处理器系统,所以multithreading将不再帮助我:( 现在我想使用asynchronous套接字来实现服务器,以便它可以一次处理多个客户端。 这种方法能正常工作吗? 如果要使用单个服务器处理多个客户端,使用asynchronous套接字是否正确? 使用asynchronous套接字比使用线程处理多个客户端更好?

recvfrom()不返回收到的字节数

这是一个非常基本的问题(希望)在Windows,c ++中使用recvfrom()。 我正在实现一个非常基本的UDP函数,它发送一个消息,然后接收一个字符消息。 当我调用recvfrom()时,我得到适当的消息,但函数不返回接收到的字节数(字符)。 相反,它返回0. snippet: sendto(sock, "10000;1;Chris\0", 14, 0, (struct sockaddr FAR *) &sin, sizeof(sin)); if(nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL) < 0) errexit("recvfrom failed: error %d\n", GetLastError()); buf[nchars] = '\0'; 我的返回消息需要附加一个空字符,但nchars一直返回0,这使得这很困难。 任何想法为什么recvfrom()不会返回接收到的字节数?