紧急求救,使用winsock的thread问题
我的程序要通过telnet连接31台使用telnet server的服务器,我使用如下方法进行处理
1.继承CWinThread在里面添加SOCKET类型的成员net
2.发送函数使用
fd_set writefds;
FD_ZERO(&writefds);
FD_SET(netsock,&writefds);
int sv = ::select(FD_SETSIZE, NULL, &writefds, NULL, &timeout);
if( sv<=0 )return;
::send(netsock,(LPCSTR)cmd,cmd.GetLength(), 0);
的程序来发送
3.接收函数使用
fd_set readfds;
FD_ZERO( &readfds );
FD_SET ( netsock,&readfds );
int sv=::select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
if( sv <= 0 )return;
int recv_size = ::recv(netsock,buf,buf_len, 0);
的程序来接收
连接4,5台服务器没有任何问题,一连接31台的服务器就会经常发生某几个recv函数返回-1,我用WSAGetLastError函数取得的err id号是183,我想问大家,我的winsocket方法是不是不对,在多线程下是不是有正确的使法?
1.继承CWinThread在里面添加SOCKET类型的成员net
2.发送函数使用
fd_set writefds;
FD_ZERO(&writefds);
FD_SET(netsock,&writefds);
int sv = ::select(FD_SETSIZE, NULL, &writefds, NULL, &timeout);
if( sv<=0 )return;
::send(netsock,(LPCSTR)cmd,cmd.GetLength(), 0);
的程序来发送
3.接收函数使用
fd_set readfds;
FD_ZERO( &readfds );
FD_SET ( netsock,&readfds );
int sv=::select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
if( sv <= 0 )return;
int recv_size = ::recv(netsock,buf,buf_len, 0);
的程序来接收
连接4,5台服务器没有任何问题,一连接31台的服务器就会经常发生某几个recv函数返回-1,我用WSAGetLastError函数取得的err id号是183,我想问大家,我的winsocket方法是不是不对,在多线程下是不是有正确的使法?
...全文
相关推荐
c代码-C语言十进制到二进制的转换
c代码-C语言十进制到二进制的转换
C语言实现二进制转换十进制
一个用C语言实现二进制转十进制的方法,有详细代码说明与源代码,可以直接COPY运行。
c语言 十进制转换为二进制
1.输入的形式和输入值的范围:输入一个十进制的输。 2.输出的形式:输出一个二进制的数。 3.程序所能达到的功能:将十进制转换为二进制。
C语言 十进制转换成二进制
十进制转换成二进制的C语言程序 能够详细明了的表示出来
c语言 二进制 十进制 快速转换
二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,如:8位二进制数:“00110101” ;c语言中表示为 0b00110101; 十进制数是我们日常使用的计数方式,如245,21,23453。 十六进制:逢16进1,用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示,对应十进制数是:0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15。c语言中十六进制数前加“0x”表示,例如:十六进制:0x35 转换为二进制数为:00110101


网络编程
