新手网络编程问题
基于tcp协议写的
调试后发现客户端第一次发的字符串信息服务端收到显示
继续输入服务端就没显示了
麻烦各位看看
服务端:
#include <iostream>
using namespace std;
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET s=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
SOCKADDR_IN addrf;
addr.sin_addr.S_un.S_addr=htonl(ADDR_ANY);
addr.sin_family=AF_INET;
addr.sin_port=htons(6000);
if(SOCKET_ERROR==bind(s,(sockaddr*)&addr,sizeof(SOCKADDR)))
{
cout<<"bind faile !"<<endl;
return 0;
}
int len=sizeof(SOCKADDR);
listen(s,5);
char buf[200];
while(1)
{
SOCKET sa=accept(s,(sockaddr*)&addrf,&len);
recv(sa,buf,200,0);
cout<<buf<<endl;
memset(buf,0,200);
send(sa,"welcome to server!",strlen("welcome to server!")+1,0);
closesocket(sa);
}
// closesocket(sa);
closesocket(s);
WSACleanup( );
return 0;
}
客户端:
#include <Winsock2.h>
#include <iostream>
using namespace std;
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET s=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addr.sin_family=AF_INET;
addr.sin_port=htons(6000);
while(1)
{
char buf[200];
char fbuf[200];
connect(s,(sockaddr*)&addr,sizeof(SOCKADDR));
gets(buf);
send(s,buf,strlen(buf)+1,0);
recv(s,fbuf,200,0);
cout<<fbuf<<endl;
closesocket(s);
}
WSACleanup();
return 0;
}