//本工程还需链接一个库文件
//解决方案一:程序代码中加入#pragma comment(lib, "Ws2_32.lib")
//解决方案二:在project\setting\link 中object/library modules加入 ws2_32.lib
//服务端
#pragma comment(lib, "Ws2_32.lib")
#include <Winsock2.h>
#include <stdio.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 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
SOCKET sockRrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_port=htons(6000);
addrSrv.sin_family=AF_INET;
bind(sockRrv,(SOCKADDR *)&addrSrv,sizeof(sockaddr));
//listen(sockRrv,5);
char recvBuffer[100];
char sendBuffer[100];
char tempBuffer[100];
SOCKADDR_IN addrClient;
int len=sizeof(sockaddr);
while(1)
{
recvfrom(sockRrv,recvBuffer,100,0,(sockaddr*)&addrClient,&len);
if('q'==recvBuffer[0])
{
sendto(sockRrv,"q",strlen("q")+1,0,(sockaddr*)&addrClient,len);
printf("Chat end!\n");
break;
}
sprintf(tempBuffer,"%s say:%s",inet_ntoa(addrClient.sin_addr),recvBuffer);
printf("%s\n",tempBuffer);
printf("Please input data:\n");
gets(sendBuffer);
sendto(sockRrv,sendBuffer,strlen(sendBuffer)+1,0,(sockaddr*)&addrClient,len);
}
closesocket(sockRrv);
WSACleanup();
}
//本工程还需链接一个库文件
//解决方案一:程序代码中加入#pragma comment(lib, "Ws2_32.lib")
//解决方案二:在project\setting\link 中object/library modules加入 ws2_32.lib
//客户端
#pragma comment(lib, "Ws2_32.lib")
#include <Winsock2.h>
#include <stdio.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 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
SOCKET sockRrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_port=htons(6000);
addrSrv.sin_family=AF_INET;
char recvBuffer[100];
char sendBuffer[100];
char tempBuffer[100];
//SOCKADDR_IN addrClient;
int len=sizeof(sockaddr);
while(1)
{
printf("please input data:\n");
gets(sendBuffer);
sendto(sockRrv,sendBuffer,strlen(sendBuffer)+1,0,(sockaddr*)&addrSrv,len);
recvfrom(sockRrv,recvBuffer,100,0,(sockaddr*)&addrSrv,&len);
if('q'==recvBuffer[0])
{
sendto(sockRrv,"q",strlen("q")+1,0,(sockaddr*)&addrSrv,len);
printf("Chat end!\n");
break;
}
sprintf(tempBuffer,"%s say:%s",inet_ntoa(addrSrv.sin_addr),recvBuffer);
printf("%s\n",tempBuffer);
}
closesocket(sockRrv);
WSACleanup();
}