gpt4 book ai didi

c++ - 绑定(bind) falis 以绑定(bind) (TCP) 并返回 -1

转载 作者:行者123 更新时间:2023-11-28 02:36:43 25 4
gpt4 key购买 nike

你好,我正在尝试找出可能导致 tcp 的绑定(bind)函数返回负结果的原因。

我正在使用以下代码:我在构造函数中创建了一次套接字并将其保存为(我的 API 的儿子)的 protected 成员。儿子是 Tcp 和 Udp。

谁能理解为什么分配不当?

API *client = new TCP(80); // creating socket
API *server = new TCP(81);

char ipServer[] = "127.0.0.1";
char buffer[] = "Do You Want?";
char answer[] = "no";
char buffer2[4096];


server->setIPAddress(ipServer);
server->bindCreator();

绑定(bind)函数

int API::bindCreator() {

struct sockaddr_in sin;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(this->portNumber);
int sock = this->socketName;
int bindC = bind(sock, (struct sockaddr *) &sin, sizeof(sin));

if (bindC < 0) {
this->error();
}
return bindC;

最佳答案

根据您的代码和后续评论,您收到错误消息,因为您指定的端口号的使用受到限制。如果你看<errno.h>你会看到错误代码 13 是 EACCES意味着对该端口号的访问已被拒绝。默认情况下,某些系统将低于 1024 的端口号限制为在 super 用户上下文中运行的应用程序的使用。您有三个选择。

  1. 选择不同的端口号
  2. 以 super 用户身份运行应用程序。
  3. 重新配置您的系统并取消所需端口号的限制。

关于c++ - 绑定(bind) falis 以绑定(bind) (TCP) 并返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27190326/

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