Client的:
#include <Winsock2.h>
#include <stdio.h>
#include "string.h"
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;
}
char strIp[20];
puts("input ip ");
gets(strIp);
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr(strIp);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(5000);
char recvBuf[100];
char sendBuf[100];
char tempBuf[200];
int len = sizeof(SOCKADDR);
while (1)
{
printf("input date : ");
gets(sendBuf);
sendto(sockClient, sendBuf, strlen(sendBuf)+1, 0, (SOCKADDR*)&addrSrv, len);
recvfrom(sockClient, recvBuf, 100, 0, (SOCKADDR*)&addrSrv, &len);
if (strcmp(recvBuf,"quit")==0) //Equal
{
sendto(sockClient, "quit", strlen("quit")+1, 0, (SOCKADDR*)&addrSrv, len);
break;
}
sprintf(tempBuf, "%s say : %s", inet_ntoa(addrSrv.sin_addr), recvBuf);
printf("%s/n", tempBuf);
}
closesocket(sockClient);
WSACleanup();
}
//-------------------------------------- 服务器端的:-----------------
#include <Winsock2.h>
#include <stdio.h>
#include "string.h"
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(5000);
bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
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 (strcmp(recvBuf,"quit")==0) //Equal
{
sendto(sockSrv, "quit", strlen("quit")+1, 0, (SOCKADDR*)&addrClient, len);
break;
}
sprintf(tempBuf, "%s say : %s/n", inet_ntoa(addrClient.sin_addr), recvBuf);
printf("%s/n",tempBuf);
printf("input date: ");
gets(sendBuf);
sendto(sockSrv, sendBuf, strlen(sendBuf)+1, 0, (SOCKADDR*)&addrClient, len);
}
closesocket(sockSrv);
WSACleanup();
}