gpt4 book ai didi

ios - Udp套接字绑定(bind)失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:18 25 4
gpt4 key购买 nike

我正在尝试连接一个运行在 Node.js 上的 UDP 服务器

int socketDs = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

struct sockaddr_in socket;
memset(&socket, 0, sizeof(socket));
socket.sin_family = AF_INET;
socket.sin_addr.s_addr = inet_addr("SERVER.IP");
socket.sin_port = htons(PORT);

long r = bind(socketDs, (struct sockaddr *)&socket, sizeof(socket));
NSLog(@"Sockect bind: %ld %s", r, strerror(errno));

无法绑定(bind)到它,返回无法分配请求的地址。但是 sendto 在没有绑定(bind)的情况下工作正常。

可能是什么问题。此外,我没有在 node.js 上获得“关闭”事件

这是我的服务器代码

var dgram = require("dgram");
var server = dgram.createSocket("udp4");

var clients = new Array();

server.on("listening", function () {
var address = server.address();
console.log("UDP Server listening on " + address.address + ":" + address.port);
});

server.on("message", function (message, remote) {
console.log(remote.address + ':' + remote.port +' - ' + message);
}
});

server.on("close") {
console.log("close");
});

server.on("error") {
console.log("error");
});

server.bind(PORT);

最佳答案

您提到的第一段代码是客户端的代码。而您正在尝试绑定(bind)到 SERVER_IP。这显然会导致您看到的 bind 错误。您正在尝试将客户端绑定(bind)到属于外部系统的 IP。

sendto 很好,因为在客户端有隐式绑定(bind)。

客户端不需要显式bind。你可以去掉那部分。

关于ios - Udp套接字绑定(bind)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367826/

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