我正在尝试制作一个简单的套接字客户端(使用 debian 6 和 g++ 编译器),当我调用
connect
函数时,它返回 error code 22 - Invalid argument
。
我已阅读此函数的手册页,它说 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 )
serverAddress.sin_addr.s_addr = htons ( serverHost );
IPv4 地址是长地址,而不是短地址,所以
htons
就可以了。无论如何,数据已经是网络字节顺序了,所以不需要转换。
inet_addr() 函数将 Internet 主机地址 cp 从 IPv4 数字和点表示法转换为网络字节顺序的二进制数据。
还有:
char serverHost;
它应该如何适合
char
?