gpt4 book ai didi

命令行参数未传入

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:19 25 4
gpt4 key购买 nike

我正在设计一对使用基本流套接字在两个程序之间进行通信的 c 程序,类似于服务器-客户端交互。大部分程序貌似没问题,但是系统客户端一直报错,我搞不定。

客户端程序一旦编译,就会使用命令行参数执行,据我所知,这应该是服务器程序的名称。但是,每次我运行以下行

./client server

我收到一个错误,该错误仅在 argv[1] 为空时才会报告。这是来自 string_client.c 的代码:

if ((he=gethostbyname(argv[1])) == NULL) {  // get the host info 
perror("gethostbyname");
printf("%s", argv[1]);
exit(1);
}

server 只是来自 string_server.c 的可执行文件,它应该等待来自客户端的传入请求并接收来自客户端程序的输入(据我所知,它一直在工作)。我不确定 gethostbyname 方法,但由于提供了该代码,我还没有质疑它。

此外,每当我尝试打印出 argv[1] 时,它都会显示为“la”……不确定那里发生了什么。命令行是怎么回事?我只是使用了错误的参数吗?

最佳答案

给你:

#include <stdio.h>
#include <netdb.h>
extern int h_errno;

int main(int argc, char **argv)
{
struct hostent *he;

if(argc < 2)
{
printf("usage: %s hostname\n", argv[0]);
return 255;
}
if ((he=gethostbyname(argv[1])) == NULL) { // get the host info
perror("gethostbyname");
printf("%s", argv[1]);
return 1;
}
printf("%s resolved to %u.%u.%u.%u\n", argv[1],
(unsigned char)(he->h_addr_list[0][0]),
(unsigned char)(he->h_addr_list[0][1]),
(unsigned char)(he->h_addr_list[0][2]),
(unsigned char)(he->h_addr_list[0][3]));

return 0;
}

现在有效:

$ gcc -Wall -o gethost gethost.c
$ ./gethost
usage: ./gethost hostname
$ ./gethost google.com
google.com resolved to 173.194.40.196
$ ./gethost localhost
localhost resolved to 127.0.0.1

关于命令行参数未传入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com