将参数传递给bind()函数

Rob*_*olm 2 c sockets

我有这个程序,它应该只将一个套接字绑定到一个端口,我总是得到

绑定时失败.

我可以毫无问题地编译它.

我应该添加一些东西servAddr吗?

#include <stdio.h>
#include <stdlib.h> 
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "Practical.h"

int main(int argc , char* argv[]){

    if(argc!=2){
        printf("Parameters : <server Port>");
    }

    in_port_t servPort=atoi(argv[1]);

    int servSock;
    if(servSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)<0){
        printf("error socket");
    }

    struct sockaddr_in servAddr;
    memset(&servAddr,0,sizeof(servAddr));
    servAddr.sin_family=AF_INET;
    servAddr.sin_addr.s_addr=htonl(INADDR_ANY);
    servAddr.sin_port=htons(servPort);

    if(bind(servSock,(struct sockaddr*) &servAddr,sizeof(servAddr)) < 0){
        printf("failure while binding");
    }
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*gio 6

=优先级低于<,添加额外的括号:

if((servSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))<0){
  printf("error socket");}
Run Code Online (Sandbox Code Playgroud)

没有这些括号servSock是,1或者0,这绝对不是你想要的.另请注意,如果没有权限,则无法绑定到低于1024的端口.