recv()是否直接返回?如何控制参数让他直接返回?

72193 2005-10-15 10:43:01
如题,
还有一个问题,下面代码中:

msgsock,和 sock有什么区别?
为什么 send(sock) 但是 recv(msgsock) ?

///////////////////////////////////////////////////////////

int main(int argc, char* argv[])
{
int sock,length;
struct sockaddr_in server;
int msgsock;
char buf[1024];
int rval;

WORD wVersionRequested;
WSADATA wsaData;

wVersionRequested = MAKEWORD(2,0);
int err=WSAStartup(wVersionRequested,&wsaData);
//如果不能初始化WinSock,退出
if(err==-1){
perror("WSAStartup");
exit(1);
}

//调用socket函数,建立自己的套接口
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0){
perror("Opening stream socket");
exit(1);
}

server.sin_family = AF_INET;
server.sin_port = htons(7016);
server.sin_addr.s_addr=INADDR_ANY;

//调用bingd()函数建立服务器本地的绑定
if(bind(sock,(const struct sockaddr*)&server,sizeof(server))<0){
perror("binding stream socket");
exit(1);
}
length=sizeof(server);
//getsockname()函数获取一个套接口的本地名字
if(getsockname(sock,(struct sockaddr*)&server,&length)<0){
perror("GETING socket name");
exit(1);
}
printf("socket port #%d\n",ntohs(server.sin_port));

//调用listen()函数,表示开始侦听
listen(sock,5);
do{
//通过accept()调用等待接受连接
msgsock=accept(sock,0,(int*)0);
printf("Have client connected.\n");
if(msgsock==-1)
perror("accept");
else
do{
memset(buf,0,sizeof(buf));
//调用recv函数接收数据
if((rval=recv(msgsock,buf,1024,0))<0)
{
rval = WSAGetLastError();
if(rval==WSAECONNRESET)
continue ;
printf("error code = %d\n",rval);
if(rval==WSAEINPROGRESS)
printf("Hello 1\n");
if(rval==WSAENETRESET)
printf("Hello 2\n");
if(rval==WSAENOTSOCK)
printf("Hello 3\n");
if(rval==WSAEOPNOTSUPP)
printf("Hello 4\n");
perror("reading stream message ");
getchar();
exit(1);
}
else if(rval==0)
printf("ending connection\n");
else
printf("--->%s\n",buf);
}while(rval!=0);
//调用函数closesocket()关闭套接口
closesocket(msgsock);
}while(1);

WSACleanup();

printf("server stop !\n");
return 0;
}
...全文
111 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
MFCBibe 2005-10-23
如果是同步的话,socket接收缓冲里没有可以接收的数据,recv()就会阻塞。

你最好先搞清楚 阻塞 和 非阻塞。

在这个论坛里搜索一下,关键词:阻塞。
回复
72193 2005-10-17
up ...
回复
72193 2005-10-15
up
回复
72193 2005-10-15
up
回复
相关推荐
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2005-10-15 10:43
社区公告
暂无公告