我正在尝试创建一个简单的套接字客户端(使用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 )
答案 0 :(得分:2)
serverAddress.sin_addr.s_addr = htons ( serverHost );
IPv4地址是长的,而不是短的,所以htons
就是正确的。无论如何,数据已经按网络字节顺序排列,因此不需要转换。
inet_addr ()函数将Internet主机地址cp从IPv4数字和点符号转换为网络字节顺序的二进制数据。
此外:
char serverHost;
它应该如何适合char
?