高分请教高手?sock接收遇见字数唯-1?

bileg 2005-07-18 08:23:46
在cb中用套接字做服务器端程序设接如下:
声明
sockaddr_in LocalAdress;
SOCKET lissocket;
SOCKET mysocket[5];
初始化启用线程
lissocket=socket(PF_INET,SOCK_STREAM,0);
if(lissocket==INVALID_SOCKET)
{
// fflush(0);
ShowMessage("SOCKET faild!!");
} /////启动线程初始化
if ( bind( lissocket, (struct sockaddr *)&LocalAdress, sizeof(LocalAdress)) != 0 )
{ ShowMessage("Error: 绑定内部网络地址失败!\n");
closesocket( lissocket );
return;

} /////////错误处理

listen(lissocket,10); /////启动监听网络;

recvthread *pp=new recvthread(0);

接收处理:
int lien=sizeof(formmain->LocalAdress);
formmain->mysocket[0]=accept(formmain->lissocket,(sockaddr *)&(formmain->LocalAdress),&lien);
if(formmain->mysocket[0]==INVALID_SOCKET)
{ ShowMessage("error");
}
else
{ int len;
unsigned char buf2[5000];
unsigned char buf1[82];
formmain->msg->Caption="已有客户申请向我连接成功";
char s[20];
int num,p,numlen;
String str;
LPSTR strbuf;
while(1)
{
len=recv(formmain->mysocket[0],buf2,5000,0);
}
}为何程序接收过路邮器的数据包,能连接上, len却一直等于-1;而我自己局域网的字符发送却能收到,sock版本问题?套接字设置问题?RECV接收函数问题?请指教!!!!
...全文
160 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cygwolf 2005-07-19
  • 打赏
  • 举报
回复
首先指出你的错误,listen最多只能同时接受5个连接请求,而你listen(lissocket,10)。
你用线程接受消息可能引起问题,我以前用线程接受消息就有问题(和你的问题不同),建议采用重叠模型,具体的请参照http://www.farproc.com/Article/ShowArticle.asp?ArticleID=176&Page=1
「已注销」 2005-07-18
  • 打赏
  • 举报
回复
学习

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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