#include<cstdio>
#include<cstdlib>
#include<string>
#include<WinSock2.h>
#include <unistd.h>
#define BUF_SIZE 30
void ErrorHandling(char const *message);
int main(int argc, char *argv[]) {
WSADATA wsaData;
SOCKET servSock;
char message[BUF_SIZE];
int strLen;
int clntAdrSz;
SOCKADDR_IN servAdr, clntAdr;
if (argc != 2) {
printf("Usage : %s<port>\n", argv[0]);
exit(1);
}
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
ErrorHandling("WSAStartup() error!");
servSock = socket(PF_INET, SOCK_DGRAM, 0);
if (servSock == INVALID_SOCKET)
ErrorHandling("UDP socket creation error!");
memset(&servAdr, 0, sizeof(servAdr));
servAdr.sin_family = AF_INET;
servAdr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
servAdr.sin_port = htons(atoi(argv[1]));
if (bind(servSock, (SOCKADDR*)&servAdr, sizeof(servAdr)) == SOCKET_ERROR)
ErrorHandling("bind() error!");
size_t buffer_bytes;
while (1) {
clntAdrSz = sizeof(clntAdr);
buffer_bytes = 0;
strLen = recvfrom(servSock, message, BUF_SIZE, 0, (SOCKADDR*)&clntAdr,&clntAdrSz);
buffer_bytes += strLen;
message[strLen] = 0;
printf("Message from qt: %s", message);
printf(" : %d\n",buffer_bytes);
// sleep(2);
}
close(servSock);
WSACleanup();
return 0;
}
void ErrorHandling(char const *message) {
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
qt udp 通信
最新推荐文章于 2022-09-02 11:27:33 发布