初学网络编程,这个程序是服务端,一运行就不停的接收到数据是怎么回事?(正常应该是等到客户端启动后收到客户端发送的数据)
#include "Winsock2.h"
#include "stdio.h"
#include "WINSOCK.H"void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
} if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
} SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addr.sin_port=htons(6000); connect(sock,(SOCKADDR *)&addr,sizeof(SOCKADDR));
char buff[100];
recv(sock,buff,100,0);
printf("%s\n",buff);
send(sock,"client asking for connect...",sizeof("client asking for connect..."),0); closesocket(sock);
WSACleanup();}
#include "Winsock2.h"
#include "stdio.h"
#include "WINSOCK.H"void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
} if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
} SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addr.sin_port=htons(6000); connect(sock,(SOCKADDR *)&addr,sizeof(SOCKADDR));
char buff[100];
recv(sock,buff,100,0);
printf("%s\n",buff);
send(sock,"client asking for connect...",sizeof("client asking for connect..."),0); closesocket(sock);
WSACleanup();}
服务端
#include <stdio.h>
#include <winsock2.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 ); //请求WINSOCKET库
err = WSAStartup( wVersionRequested, &wsaData ); //加载WINSOCKET库
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) !=1 || HIBYTE( wsaData.wVersion ) !=1 )
{
WSACleanup( );
return;
}
SOCKET socketserver=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrserver;
addrserver.sin_family=AF_INET;
addrserver.sin_port=6000;
addrserver.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
bind(socketserver,(SOCKADDR*)&addrserver,sizeof(SOCKADDR)); listen(socketserver,2);
SOCKADDR_IN addrclient;
int len=sizeof(SOCKADDR);
char sendbf[100];
char recvbf[100];
char tempbf[100];
SOCKET newsocket; while(1)
{
newsocket=accept(socketserver,(SOCKADDR*)&addrclient,&len );
// sprintf(sendbf," %s",inet_ntoa(addrclient.sin_addr) );
recv(newsocket,recvbf,strlen(recvbf)+1,0);
sprintf(tempbf,"%s say %s:",inet_ntoa(addrclient.sin_addr),recvbf);
printf("%s\n",tempbf); printf("shuru shuju:");
gets(sendbf);
send(newsocket,sendbf,strlen(sendbf)+1,0);
}
closesocket(newsocket);
WSACleanup( );}
#include "Winsock2.h"
#include "stdio.h"
#include "WINSOCK.H"void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
} if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
} SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addr.sin_port=htons(6000);
bind(sock,(SOCKADDR *)&addr,sizeof(SOCKET));
listen(sock,5);
sockaddr_in rec_addr;
int len=sizeof(SOCKADDR);
char buff[100];
int i=0;
while(i++<100)
{
SOCKET rec=accept(sock,(SOCKADDR *)&rec_addr,&len);
//send(rec,"scy",sizeof("scy")+1,0);
recv(rec,buff,100,0);
printf("receive from %s: %s",inet_ntoa(rec_addr.sin_addr),recv);
closesocket(rec);
}
WSACleanup();}