| 发表于:2007-05-20 11:42:49 楼主 |
我的程序是一个十分简单的telnet客户端 先是用winsocket的connect()连接23端口 然后用recv()接受数据 问题是,如果我connect()成功后马上开始循环调用recv()收数据 发现第一次收只会收到3个byte(对方发送过来的数据肯定大于3个) 但若在connect()和recv()间先sleep个几秒后则能正常收取数据 请问这是何故? -----部分代码----------- wsastartup(0x0101,&wd); char pbuf[128]; csocketdx socketdx( "166.111.8.238 ", ipport_telnet); m_hsocket = socketdx.telnetconnect(); sleep(5000);//不加这句,第一次nret就只等于3 while ((nret = recv(m_hsocket,pbuf,sizeof(pbuf),0)) > 0) { if (nret < sizeof(pbuf)) { pbuf[nret] = '\0 '; ofile.write(pbuf, nret); break; } if ( socket_error == nret) { break; } ofile.write(pbuf, nret); } |
|
|
|
|