#include <winsock2.h>
#include <stdio.h>
#include <iostream.h>
SOCKET ser;
SOCKET client;
SOCKADDR_IN clientaddr;
int len=sizeof(SOCKADDR);
char buff[1024];
DWORD WINAPI Fun1(LPVOID lpParameter);
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;
}
ser=socket(AF_INET,SOCK_STREAM,0);
int TimeOut=5000;//设置接收超时6秒
if(::setsockopt(ser,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR)
{
return ;
}
SOCKADDR_IN seraddr;
seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(12345);
bind(ser,(SOCKADDR*)&seraddr,sizeof(SOCKADDR));
listen(ser,5);
while (1)
{
stop:client=accept(ser,(SOCKADDR*)&clientaddr,&len);
DWORD lngPassTime=0;
while(lngPassTime<=2500)
{
DWORD lngStartTime=GetTickCount();
if(recv(client,buff,1024,0)==SOCKET_ERROR)
{
cout<<WSAGetLastError()<<endl;
break;
}
else
cout<<buff<<endl;
lngPassTime=GetTickCount()-lngStartTime;
send(client,"收到!",strlen("收到")+1,0);
}
closesocket(client);
closesocket(client);
goto stop;
}
return;
}