socket TCP连接 为什么recv()一直在接收啊?
我把孙鑫老师的TCP socket编程改了一下,不知道为什么,TCPServer端始终在接收字符串“This is lisi”,尽管TCPClient端只发送了一次,请高手指点,谢谢!!!
TCP Server 端源程序:
。。。。。。//加载套接字库(略)
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"Welcome %s to http://www.sunxin.org",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
while(1)
{
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
//closesocket(sockConn); 这里被我改掉了,本来是没有注释掉,所以接收了一次就关闭了
}
TCP Client端源程序:
。。。。。。//加载套接字库(略):
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 recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"This is lisi",strlen("This is lisi")+1,0);//这里只发送了一次,为什Server端一直在接收呢?
closesocket(sockClient);
WSACleanup();
是不是在Server端我没有用socket阻塞?还是什么原因呢?
TCP Server 端源程序:
。。。。。。//加载套接字库(略)
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"Welcome %s to http://www.sunxin.org",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
while(1)
{
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
//closesocket(sockConn); 这里被我改掉了,本来是没有注释掉,所以接收了一次就关闭了
}
TCP Client端源程序:
。。。。。。//加载套接字库(略):
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 recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"This is lisi",strlen("This is lisi")+1,0);//这里只发送了一次,为什Server端一直在接收呢?
closesocket(sockClient);
WSACleanup();
是不是在Server端我没有用socket阻塞?还是什么原因呢?
...全文
相关推荐
c语言实现socket.docx
c语言实现socket
LWIP_socket(4recv)
1.前言 一个基本的socket建立顺序是 Server端: socket() bind() listen() accept() recv() Client端: socket() connect() send() 本文着重介绍Server端的recv()过程。还记得前一篇的accept吧,不熟悉的再回去看看. 前一篇文章中,accept()生成了一个新的socket,作为server端socket...
c语言原始SOCKEt编程.pdf
c语言原始SOCKEt编程.pdf
Socket编程
socket编程,欢迎大家来学习
网络socket编程指南
网络socket编程指南,很好的东西,希望大家都努力学习,加油!!!


网络编程
