你好,我试图找出可能导致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;
}
答案 0 :(得分:2)
根据您的代码和后续注释,您收到错误,因为您指定的端口号的使用受到限制。如果查看<errno.h>
,您将看到错误代码13为EACCES
,表示已拒绝访问该端口号。默认情况下,某些系统将使用低于1024的端口号限制为在超级用户的上下文中运行的应用程序。你有三个选择。