首页 文章

C连接功能错误 - 参数无效

提问于
浏览
1

我正在尝试创建一个简单的套接字客户端(使用debian 6和g编译器),当我调用“connect”函数时,它返回错误代码22 - 无效的参数 . 请告诉我,我做错了什么 .

我已经阅读了这个函数的手册页,它说3个参数必须如下:int,struct sockaddr *和socklen_t .

我的代码是:

int                   serverPort;
  u_long                serverHost;
  struct sockaddr_in    serverAddress;
  socklen_t             serverAddressLength;
  int                   clientSocket;

  serverPort = 44444;
  serverHost = inet_addr ( "88.198.237.65" );
  serverAddress.sin_family = AF_INET;
  serverAddress.sin_port =  htons ( serverPort );
  serverAddress.sin_addr.s_addr = htons ( serverHost );
  serverAddressLength = sizeof ( serverAddress );

  clientSocket = socket ( AF_INET , SOCK_STREAM , 0 );

  connect ( clientSocket , (sockaddr*)&serverAddress , serverAddressLength )

1 回答

  • 2
    serverAddress.sin_addr.s_addr = htons ( serverHost );
    

    IPv4地址是长的,而不是短的,所以 htons 是正确的 . 无论如何,数据已经按网络字节顺序排列,因此不需要转换 .

    inet_addr()函数将Internet主机地址cp从IPv4数字和点符号转换为网络字节顺序的二进制数据 .

    也:

    char                  serverHost;
    

    它应该如何适应 char

相关问题