C ++连接函数错误 - 参数无效

时间:2012-08-03 14:08:13

标签: c++ sockets arguments connect

我正在尝试创建一个简单的套接字客户端(使用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 个答案:

答案 0 :(得分:2)

  serverAddress.sin_addr.s_addr = htons ( serverHost );

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

  

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

此外:

 char                  serverHost;

它应该如何适合char