[英]Command-line argument not getting passed in
我正在設計一對使用基本流套接字在兩個程序之間進行通信的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.