Socket send一种超时解决方法
kelvin 发布于 2022-06-05

使用socket进行文件传输,在本地测试没问题,但是服务端部署到服务器发现一个问题,本地客户端发送了很多数据,而服务器上接收到的数据少,多次测试也不稳定,接受到的数据多少比较随机,客户端发送一段时间之后就send函数就卡住了,无法继续发送,进行超时设置,如下代码,之后就返回了,说明是阻塞,

int nNetTimeout = 1000;//1秒,
	//设置发送超时
	setsockopt(sockServer, SOL_SOCKET, SO_SNDTIMEO, (char*)&nNetTimeout, sizeof(int));

后来想到一个方法,发送端每次发送前用Sleep函数先睡眠20毫秒,后面测试发现服务端接收数据就多了很多,很可能是因为send到服务器数据过快,在本地电脑模拟数据传输及时,而服务器走公网网络慢导致。

kelvin
关注 私信
文章
92
关注
0
粉丝
0