www.pudn.com > UdpChat.rar > ChatSrv.cpp


#include  
#include  
 
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_DGRAM,0); 
	SOCKADDR_IN addrSrv; 
	addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); 
	addrSrv.sin_family=AF_INET; 
	addrSrv.sin_port=htons(729); 
 
	bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); 
 
	printf("Waiting for connect...\n"); 
 
	char recvBuf[100]; 
	char sendBuf[100]; 
	char tempBuf[200]; 
 
	SOCKADDR_IN addrClient; 
	int len=sizeof(SOCKADDR); 
 
	while(1) 
	{ 
		recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len); 
		if('q'==recvBuf[0]) 
		{ 
			sendto(sockSrv,"q",strlen("q"),0,(SOCKADDR*)&addrClient,len); 
			printf("Chat End!\n"); 
			break; 
		} 
		sprintf(tempBuf,"%s say:	%s",inet_ntoa(addrClient.sin_addr),recvBuf); 
		printf("%s\n",tempBuf); 
		printf("Please input:	"); 
		gets(sendBuf); 
		sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len); 
 
	} 
 
	closesocket(sockSrv); 
	WSACleanup(); 
}