/////////////////////////////////
//UDP_server.cpp
#pragma comment(lib, "ws2_32")
#include <winsock2.h>
#include <stdio.h>
bool InitWinsock();
void main()
{
SOCKET socket1;
InitWinsock();
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen = sizeof(from);
local.sin_family = AF_INET;
local.sin_port = htons(1000);
local.sin_addr.S_un.S_addr = INADDR_ANY;
socket1 = socket(AF_INET, SOCK_DGRAM, 0);
bind(socket1, (struct sockaddr *)&local, sizeof(local));
while(1)
{
char buffer[1024] = "\0";
char buffers[1024] = "Here is UDP_server, I got your message!";
printf("Waiting for message from others-----------------------\n");
if(recvfrom(socket1, buffer, sizeof(buffer), 0, (struct sockaddr *)&from, &fromlen) != SOCKET_ERROR)
{
printf("Recieved datagram from server:%s--%s\n", inet_ntoa(from.sin_addr), buffer);
//给Client发信息
sendto(socket1, buffers, sizeof(buffers), 0, (struct sockaddr *)&from, fromlen);
}
Sleep(500);
}
closesocket(socket1);
}
bool InitWinsock()
{
int Error;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested = MAKEWORD(2,2);
Error = WSAStartup(VersionRequested, &WsaData);
if(Error != 0)
return FALSE;
else
if(LOBYTE(WsaData.wVersion) != 2 || HIBYTE(WsaData.wHighVersion) != 2)
{
WSACleanup();
return FALSE;
}
return TRUE;
}
/////////////////////////////////
//UDP_client.cpp
#pragma comment(lib, "ws2_32")
#include <winsock2.h>
#include <stdio.h>
bool InitWinsock();
void main()
{
SOCKET socket1;
InitWinsock();
struct sockaddr_in server;
int len = sizeof(server);
server.sin_family = AF_INET;
server.sin_port = htons(1000);
server.sin_addr.S_un.S_addr = inet_addr("172.18.130.18");
socket1 = socket(AF_INET, SOCK_DGRAM, 0);
while(1)
{
char buffer[1024] = "\0";
printf("input message\n");
scanf("%s", buffer);
if(strcmp(buffer, "bye") == 0)
break;
if(sendto(socket1, buffer, sizeof(buffer), 0, (struct sockaddr *)&server, len) != SOCKET_ERROR)
{
if(recvfrom(socket1, buffer, sizeof(buffer), 0, (struct sockaddr *)&server, &len) != SOCKET_ERROR)
printf("rece from server:%s\n", buffer);
}
}
closesocket(socket1);
}
bool InitWinsock()
{
int Error;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested = MAKEWORD(2,2);
Error = WSAStartup(VersionRequested, &WsaData);
if(Error != 0)
return FALSE;
else
if(LOBYTE(WsaData.wVersion) != 2 || HIBYTE(WsaData.wHighVersion) != 2)
{
WSACleanup();
return FALSE;
}
return TRUE;
}
