UDP Tx循环每次停止工作的数据包正好是3970个,在我朋友的电脑上是14386个
UDP Tx loop stops working every time at exactly 3970 packets, 14386 on my friends computer
在过去的4天里,我一直在处理这个问题,似乎无法解决。我正在尝试使用UDP数据包将数据发送给自己,以便另一个程序可以读取字节。
我可以清楚地读取数据包,但在程序的UDP部分挂起之前,我只能读到3970。面筋和其他一切都很好。我给了我的朋友同样的代码,他在他的电脑上运行。在挂起之前,他得到了14386次迭代。变量temp将计算发送的数据包数-1不好。计数器对while循环迭代进行计数。我在这里举一个例子:
http://msdn.microsoft.com/en-us/library/ms740148(v=vs.85(.aspx
示例代码:
#include "stdafx.h"
#include <WinSock2.h> // don't forget to add in
//Project Properties>Linker>Input>Additional Dependences [Ws2_32.lib]
sockaddr_in dest;
sockaddr_in local;
WSAData data;
static void SUDP_init(void)
{
printf("--[UDP Socket Initialized]--rn");
WSAStartup( MAKEWORD( 2, 2 ), &data );
local.sin_family = AF_INET;
local.sin_addr.s_addr = inet_addr( "127.0.0.1" ); //same as localhost
local.sin_port = 6000;
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = inet_addr( "127.0.0.1" );
dest.sin_port = htons( 6000 );
bind( socket( AF_INET, SOCK_DGRAM, 0 ), (sockaddr *)&local, sizeof(local) );
printf("Socket Bound...rn");
}
static int counter = 0;
int _tmain(int argc, _TCHAR* argv[])
{
SUDP_init();
while(1){
char packet[30];
sprintf(packet, "%0.3f,%0.3f,%0.3f",
55.4,
16.1,
-27.88);
int temp = sendto( socket( AF_INET, SOCK_DGRAM, 0 ), packet, strlen(packet), 0, (sockaddr *)&dest, sizeof(dest) );
if(temp>=1){
counter++;
}
printf("Bytes Sent: %d, Counter: %drn",temp,counter);
}
return 0;
}
在循环中分配新的套接字(sendto
的第一个参数(,也为bind
分配另一个套接字,但这些套接字永远不会释放。您最终用完了要分配的套接字句柄,因此您的程序挂起。
相反,在SUDP_init
中分配一次套接字,将其存储而不是丢弃,然后将其传递给bind
和sendto
相关文章:
- C++在变量给定的指定时间内关闭电脑
- 一位朋友将模板函数缩写为clang和gcc
- 班级的朋友是不可接近的
- 与朋友声明相反
- 为什么即使我声明了朋友类,我也会收到错误"无法访问类中声明的私人成员"
- C++代码在台式机上工作正常,但在笔记本电脑上则不行
- 类似虚拟的朋友功能?
- CNTK:->转发或 ->评估某些电脑上的崩溃,而不是其他电脑上的崩溃
- 为什么C++需要公共继承,忽略朋友声明,才能使动态向下工作?
- 在朋友类中使用模板
- 访问私人成员而不使用朋友类
- 类和朋友在它们之间起作用
- "朋友"成员函数和 GCC 与 Clang
- 朋友声明的复杂范围界定规则有什么意义?
- C++:让函数成为多个类的朋友?
- 有没有办法C++将给定类的功能限制为仅另一个类(不使用继承,朋友)?
- 朋友,前瞻宣言,C++
- "... .exe hast stopped working"只发生在我朋友的电脑上,而不是我的电脑上
- 如何使 *.dll WinAmp 插件在朋友电脑上工作
- UDP Tx循环每次停止工作的数据包正好是3970个,在我朋友的电脑上是14386个