📄 socketcommunication.cpp
字号:
#include <stdio.h>
#include "SocketCommunication.h"
#include "Config.h"
BOOL StartIoOnSocket(BOOL bClient)
{
DWORD dwID;
if (!bClient)
{
g_hSocket = CreateThread(NULL,0,SockServerThread,0,0,&dwID);
}
return TRUE;
}
BOOL StopIoOnSocket(VOID)
{
if (NULL != g_hSocket)
{
if(WaitForSingleObject(g_hSocket, 3000) != WAIT_OBJECT_0)
TerminateThread(g_hSocket, -1);
CloseHandle(g_hSocket);
}
return TRUE;
}
DWORD WINAPI SockServerThread(LPVOID param)
{
WSAData wsaData;
SOCKET sock;
struct sockaddr_in addr;
INT32 len = sizeof(addr);
UINT32 buf_len;
CHAR buf[10];
UINT32 buflen = 0;
WSAStartup(MAKEWORD(2,0), &wsaData);
sock = socket(AF_INET, SOCK_DGRAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(g_iSocketPort);
addr.sin_addr.S_un.S_addr = INADDR_ANY;
bind(sock, (struct sockaddr *)&addr, sizeof(addr));
memset(buf, 0, sizeof(buf));
while(g_bFlag)
{
buf_len = recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&addr, &len);
printf("socket recv data:%s\n", buf);
Sleep(1000);
}
closesocket(sock);
WSACleanup();
return 0;
}
DWORD WINAPI SockClient(CHAR* buf, UINT32 buf_len)
{
WSAData wsaData;
SOCKET sock;
struct sockaddr_in addr;
WSAStartup(MAKEWORD(2,0), &wsaData);
sock = socket(AF_INET, SOCK_DGRAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(g_iSocketPort);
addr.sin_addr.S_un.S_addr = inet_addr("192.168.100.200");
sendto(sock, (CHAR*)buf, buf_len, 0, (struct sockaddr *)&addr, sizeof(addr));
printf("socket send data:%s\n", buf);
closesocket(sock);
WSACleanup();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -