Server端:
#include "stdafx.h"
#include "NetWork.h"
#include "winsock2.h"
// innitialize socket
bool InitializeSocket()
{
bool bRet = false;
do
{
WSAData wsadata;
if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata))
break;
if (2 != LOBYTE(wsadata.wVersion) || 2 != HIBYTE(wsadata.wVersion))
break;
bRet = true;
} while (false);
return bRet;
}
sockaddr_in clientAddr;
// BindSocketToPort
int BindSocketToPort()
{
int nRet = -1;
do
{
SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.S_un.S_addr = inet_addr("192.168.1.3"); // 0 any ip
nRet = bind(sock, (SOCKADDR*)&addr, sizeof(SOCKADDR));
if (nRet == SOCKET_ERROR)
break;
int len = sizeof(SOCKADDR);
char buf[1024] = { 0 };
int res = recvfrom(sock, buf, sizeof(buf), 0, (SOCKADDR*)&clientAddr, &len);
printf("blocked:%s,%d\n", buf, sock);
nRet = sock;
CreateThread(0,0, RecvProc, (void*)(&sock),0, 0);
while (true)
{
char buf[1024] = { 0 };
gets_s(buf, 1024);
sendto(sock, buf, 1024, 0,(SOCKADDR*)&clientAddr,sizeof(SOCKADDR) );
}
} while (false);
return nRet;
}
unsigned long __stdcall RecvProc(void* lpParameter)
{
while (true)
{
char buf[1024] = { 0 };
int res = recvfrom(*(int*)lpParameter, buf, sizeof(buf), 0, 0, 0);
printf("recevied from client:%s,%d\n", buf, *(int*)lpParameter);
}
return 0;
}
客户端:
#include "stdafx.h"
#include "NetWork.h"
#include "winsock2.h"
#include "stdio.h"
// innitialize socket
bool InitializeSocket()
{
bool bRet = false;
do
{
WSAData wsadata;
if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata))
break;
if (2 != LOBYTE(wsadata.wVersion) || 2 != HIBYTE(wsadata.wVersion))
break;
bRet = true;
} while (false);
return bRet;
}
// Create Socket
int CreateSocket()
{
int nRet = -1;
do
{
SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.S_un.S_addr = inet_addr("192.168.1.3"); // 0 any ip
sendto(sock, "hello", strlen("hello"), 0, (SOCKADDR*)&addr, sizeof(SOCKADDR));
CreateThread(0, 0,RecvFrom, (void*)&sock, 0, 0);
while (true)
{
char buf[1024] = { 0 };
gets_s(buf);
// Send
sendto(sock, buf, strlen(buf), 0, (SOCKADDR*)&addr, sizeof(SOCKADDR));
}
nRet = sock;
} while (false);
return nRet;
}
unsigned long __stdcall RecvFrom(void* lpParameter)
{
int sock = *(int*)lpParameter;
while (true)
{
char buf[1024] = { 0 };
recvfrom(sock, buf, 1024, 0, 0, 0);
printf("received from server:%s\n", buf);
}
}