帮忙看这个简短的SOCKET什么问题

parazhouyu 2007-06-28 07:09:53
//服务器端
#include<winsock2.h>
#include<stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(1,1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {

return;
}


if ( LOBYTE( wsaData.wVersion ) != 1||
HIBYTE( wsaData.wVersion ) != 1) {
WSACleanup( );
return;
}
SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

bind(sockSrv,(sockaddr*)&addrSrv,sizeof(SOCKADDR));

listen(sockSrv,5);

SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);

while(1)
{
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);

char buff[100];
sprintf(buff,"welcome %s to www.163.com",inet_ntoa(addrClient.sin_addr));
send(sockConn,buff,strlen(buff)+1,0);
char recvBuff[100];
recv(sockConn,recvBuff,100,0);
printf("%s\n",recvBuff);

closesocket(sockConn);

}




}


//---------客户端

#include<winsock2.h>
#include<stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(1,1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {

return;
}


if ( LOBYTE( wsaData.wVersion ) != 1||
HIBYTE( wsaData.wVersion ) != 1) {
WSACleanup( );
return;
}
SOCKET sockClient= socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
connect(sockClient,(sockaddr*)&addrSrv,sizeof(SOCKADDR));

char recvBuff[100];
recv(sockClient,recvBuff,100+1,0);
printf("%s\n",recvBuff);
send(sockClient,"this is test",strlen("this is test")+1,0);

closesocket(sockClient);
WSACleanup();
}


问题是: 客户端怎么不停的接到信息??请大家帮忙

...全文
146 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
theendname 2007-06-28
  • 打赏
  • 举报
回复
while(1)
{
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);

char buff[100];
sprintf(buff,"welcome %s to www.163.com",inet_ntoa(addrClient.sin_addr));
send(sockConn,buff,strlen(buff)+1,0);
char recvBuff[100];
recv(sockConn,recvBuff,100,0);
printf("%s\n",recvBuff);

closesocket(sockConn);

}
你这里不是循环吗?当然是发个不停了
gunsand 2007-06-28
  • 打赏
  • 举报
回复
不对 一般连一次ACCEPT么 否则是阻塞的.
还真有点怪呵呵。 你不是没设置 NON_BLOCK么

65,204

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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