gpt4 book ai didi

c - 查找UDP数据包的源IP/进程

转载 作者:行者123 更新时间:2023-12-01 14:00:16 28 4
gpt4 key购买 nike

我在我的 C 程序中使用 recvfrom() 从多个客户端接收 UDP 数据包,这些客户端可以使用自定义用户名登录。一旦他们登录,我希望他们的用户名与唯一的客户端进程配对,这样服务器就可以通过数据包的来源自动知道用户是谁。我如何从使用 recvfrom() 收到的数据包中获取此信息?

最佳答案

#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <cstring>

int main()
{
int sock = socket(AF_INET, SOCK_DGRAM, 0);

struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
addr.sin_addr.s_addr = INADDR_ANY;

bind(sock, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr));

char message[256];
struct sockaddr_in from;
socklen_t fromLen = sizeof(from);
recvfrom(sock, message, sizeof(message), 0, reinterpret_cast<struct sockaddr*>(&from), &fromLen);

char ip[16];
inet_ntop(AF_INET, &from.sin_addr, ip, sizeof(ip));

std::cout << ip << ":" << ntohs(from.sin_port) << " - " << message << std::endl;

关于c - 查找UDP数据包的源IP/进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13105713/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com