我正在编写一个基本上执行服务器-客户端关系的程序。
当我运行我的客户端时(使用相关参数,当服务器已经运行时),我收到以下 errno 消息:
无效参数
这是相关代码的一部分:
if(argc != NUM_OF_ARGS)
{
fprintf(stderr,"usage: Client <CLIENT NAME> <SERVER ADDRESS> <SERVER PORT>\n");
exit(1);
}
int serverPort = atoi(argv[3]);
if(serverPort == 0){
cerr << serverPort<<endl;
fprintf(stderr,"bad arguments\n");
exit(1);
}
//update the local machine's addr
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(serverPort);
inet_aton(argv[2],&(server_addr.sin_addr));
memset(&(server_addr.sin_zero),'\0',8);
int fd = socket(PF_INET,SOCK_STREAM,0);
if(fd < 0){
fprintf(stderr,strerror(errno));
exit(1);
}
if(connect(fd,(sockaddr*)&server_addr,BUFFERSIZE) < 0){
fprintf(stderr,strerror(errno));//My program gets here and exits.
exit(1);
}
另一个注意事项:我作为参数给出的地址的格式为:132.65.151.68
我在这里做错了什么?
connect
期望第三个参数是第二个参数指向的结构体的大小。详情请参阅man 2 connect
。