socket编程

gongluyang 2005-09-13 01:37:03
我现在有一个写了一个socket程序查找local网的的机器, 客户端在socket bind以后,做一个select和recvfrom的循环,然后,我有时候能得到正确的机器列表,有时候就得不到,错误信息从select显示超时,就算我把select时间限制设大也不能解决这个问题?请问列位有谁知道select超时还有什么原因吗?比如socket堵塞,希望大侠帮忙!
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongluyang 2005-09-14
  • 打赏
  • 举报
回复
按时到达是什么概念?服务端的sendto都是succeed的, 我这边客户端用的是广播的形式,同时接收多个服务端发来的信息,会不会影响?
nuaawenlin 2005-09-13
  • 打赏
  • 举报
回复
那要首先保证你的数据已经按时到达了客户端才好分析是什么造成错误

如果数据没有按时到达,那肯定会超时返回
gongluyang 2005-09-13
  • 打赏
  • 举报
回复
哪位大仙知道吗?
gongluyang 2005-09-13
  • 打赏
  • 举报
回复
部分代码如下:
if ( ( soc = socket(AF_INET, SOCK_DGRAM, 0) ) <0 )
{
PRINTF(info_debug, ("create broadcast socket err\n"));
return PCCLIENT_SOCKET_ERROR;
}
//C( soc != ERROR, PCCLIENT_SOCKET_ERROR );
sFd = soc;

if (setsockopt (sFd, SOL_SOCKET, SO_RCVBUF, (char *)&optval, sizeof(optval)) < 1) {
PRINTF(info_debug, ("setsockopt failed, errno=%d\n", errno));
}


/* bind socket to local address */
if ( (sts = bind( sFd, (struct sockaddr *) &recAddr, sockAddrSize ) ) < 0 )
{
PRINTF(info_debug, ("bind err %d\n",sts));
return PCCLIENT_BIND_ERROR;
}
//C( sts != ERROR, PCCLIENT_BIND_ERROR );

startTime = time( NULL );
do {
FD_ZERO( &set );
FD_SET( sFd, &set );
tim.tv_sec = SELECT_NETWORK_TIMEOUT_SECS;// 1 second
tim.tv_usec = 0;
memset(pContext->SimpleBuffer, 0, PKTSIZE);


sts = select(FD_SETSIZE, &set, NULL, NULL, &tim);
PRINTF(info_debug, ("select return %d\n", sts));
C( sts != ERROR, PCCLIENT_SELECT_ERROR );
if ( sts != 0 ) {
sts = recvfrom( sFd, (char *)(pContext->SimpleBuffer), PKTSIZE, 0,
(struct sockaddr *)&sendAddr, &sockAddrSize );
C( sts != ERROR, PCCLIENT_RECVFROM_ERROR );

PRINTF(info_debug, ( "recieved %s and %s\n", pContext->SimpleBuffer, & (pContext->SimpleBuffer[100]) ));

pcclientAddToServerList( pContext, pContext->SimpleBuffer, &(pContext->SimpleBuffer[100]) );

} else {
// printf(" Select Timeout for RecvFrom...\n");
}

} while ( time(NULL) - startTime < PING_RESPONSE_DURATION_SECS ); // three second
alen_ghl 2005-09-13
  • 打赏
  • 举报
回复
也想知道

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧