代码拉取完成,页面将自动刷新
#include <iostream>
#include <iomanip>
#include <WinSock2.h>
#pragma comment(lib, "WS2_32.lib")
int main(void) {
// run wsa.
WSADATA wData = { 0 };
WSAStartup(MAKEWORD(2, 2), &wData);
// message buffer.
int nSize = sizeof(sockaddr);
char* buffer = new char[256];
// intro.
std::cout << "Server End Executive Program:" << std::endl << std::endl;
// apply socket.
SOCKET sockSer = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
// fill address info.
SOCKADDR_IN addrCli, addrSer = { 0 };
addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(10101);
// addrSer.sin_addr.s_addr = INADDR_ANY; // INADDR_ANY == 0
// bind address info to socket.
bind(sockSer, (sockaddr*)&addrSer, sizeof(addrSer));
// recv client's message.
// formation:
// hh:mm
// from: (xx)x.(xx)x.(xx)x.(xx)x :
// [message]
//
// [wait for another message]
while (true) {
time_t t = 0;
memset(buffer, 0, 256);
recvfrom(sockSer, buffer, 255, 0, (sockaddr*)&addrCli, &nSize);
time(&t);
std::cout << std::setfill('0') << std::setw(2);
std::cout << localtime(&t)->tm_hour << ":" << localtime(&t)->tm_min << std::endl;
std::cout << "from: " << inet_ntoa(addrCli.sin_addr) << " :" << std::endl;
std::cout << buffer << std::endl << std::endl;
}
// release memory.
delete[] buffer;
// release socket.
closesocket(sockSer);
// clear up wsa.
WSACleanup();
// exit with code 0.
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。