服务端源程序:
#include <stdio.h>
#include <Winsock2.h>
#include <windows.h>
#define ERR -1 //error
#define INFOLEN 100 //接收的字符数
unsigned long threadId;
SOCKET socketsrv;
SOCKADDR_IN srvadd;
SOCKADDR_IN clientadd;
unsigned long _stdcall RecvInfoThread( void *pv );
unsigned long _stdcall RecvInfoThread( void *pv )

int ret=1;
  char recive[INFOLEN];
  int len =sizeof(SOCKADDR);
  while(ret!=ERR)
  {
  ret=recvfrom(socketsrv,recive,INFOLEN,0,(SOCKADDR*)&clientadd,&len);
  if(ret!=ERR)
  {
  printf("%s\n",recive);
  }
  }
  
  return 0;
}
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL.                                  */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return; 
}
// int iMode=1;
socketsrv=socket(AF_INET,SOCK_DGRAM,0);
// ioctlsocket(socketsrv,FIONBIO, (u_long FAR*) &iMode);

//设置

srvadd.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
srvadd.sin_family=AF_INET;
srvadd.sin_port=htons(6000);
// 绑定
bind(socketsrv,(SOCKADDR*)&srvadd,sizeof(SOCKADDR));





int len=sizeof(SOCKADDR);
CreateThread( NULL,0,&RecvInfoThread,NULL,0,&threadId );

char send[100];
while(1){
gets(send);

if( sendto(socketsrv,send,strlen(send)+1,0,(SOCKADDR*)&clientadd,len)!=ERR)
{
printf("%s\n",send);
printf("%s\n",inet_ntoa(clientadd.sin_addr));
}

}
}
客户端源程序:
#include <stdio.h>
#include <Winsock2.h>
#include <windows.h>
#define ERR -1 //error
#define INFOLEN 100 //接收的字符数
unsigned long threadId;
SOCKET socketclient;
SOCKADDR_IN srvadd;unsigned long _stdcall RecvInfoThread( void *pv );
unsigned long _stdcall RecvInfoThread( void *pv )

          int ret=1;
  char recive[INFOLEN];
  int len =sizeof(SOCKADDR);
  while(1)
  {
  ret=recvfrom(socketclient,recive,INFOLEN,0,(SOCKADDR*)&srvadd,&len);
  if(ret!=ERR)
  {
  printf("%s\n",recive);
  }
 
  }
         
         return 0;
}
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL.                                  */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return; 
}
//int iMode=1;
socketclient=socket(AF_INET,SOCK_DGRAM,0);
  //  ioctlsocket(socketclient,FIONBIO, (u_long FAR*) &iMode);

srvadd.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
srvadd.sin_family=AF_INET;
srvadd.sin_port=htons(6000);
 CreateThread( NULL,0,&RecvInfoThread,NULL,0,&threadId);
char send[100];

int i=1; int len =sizeof(SOCKADDR);
while(1)
{
gets(send);
sendto(socketclient,send,strlen(send)+1,0,(SOCKADDR*)&srvadd,len);
}


}