将falis绑定到绑定(TCP)并返回-1

时间:2014-11-28 14:01:48

标签: c++ sockets tcp

你好,我试图找出可能导致tcp的绑定功能返回否定结果的原因。

我使用以下代码: 我在构造函数中创建一次套接字并将其保存为(我的API的儿子)的受保护成员。儿子是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();

绑定功能

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;

}

1 个答案:

答案 0 :(得分:2)

根据您的代码和后续注释,您收到错误,因为您指定的端口号的使用受到限制。如果查看<errno.h>,您将看到错误代码13为EACCES,表示已拒绝访问该端口号。默认情况下,某些系统将使用低于1024的端口号限制为在超级用户的上下文中运行的应用程序。你有三个选择。

  1. 选择其他端口号
  2. 以超级用户身份运行应用程序。
  3. 重新配置系统并删除所需端口号的限制。