C绑定到指定的TCP端口

时间:2013-05-23 15:35:52

标签: c networking port bind

我用C创建了一个Linux网络应用程序

除了它每次运行它,它绑定到一个新的随机端口

//Create Socket
int socket_desc;
socket_desc=socket(AF_INET,SOCK_STREAM,0);
if (socket_desc==-1)
  perror("Create socket");
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
//Port defined Here:
address.sin_port=htons(81);
//Bind
bind(socket_desc,(struct sockaddr *)&address,sizeof(address));
listen(socket_desc,32);
//Do other stuff (includes accepting connections)

你可以看到我已经指定了端口,但它仍然选择了一个免费的随机端口

赞赏任何有关此教程的帮助或链接

2 个答案:

答案 0 :(得分:1)

您需要使用大于1024的端口号。小于1024的端口号是保留端口,由标准服务使用。

答案 1 :(得分:0)

这种行为有两个原因(当你指定端口,但是系统将套接字绑定到一个随机的):

  
      
  1. 如果您要求1024以下的端口。这肯定是您的情况
  2.   
  3. 如果您忘记使用htons()功能。在这种情况下,端口号的字节使用顺序错误,导致#1。
  4.