>

명령 줄 인수가 주어진 소켓을 초기화하려고하는데 argv1은 ip이고 argv2는 port입니다. 포트는 필요에 따라 작동하지만 IP 주소를 만드는 것이 문제입니다. 예상 입력은 ./client.out 10.5.10.20 88888입니다. 이것은 클라이언트 측이며 서버 측은 포트 번호를 성공적으로 생성합니다.

   // Socket information
    char ipadd[255];
    strcpy(ipadd,argv[1]);
    int portval = atoi(argv[2]);
    struct sockaddr_in server_info, client_info;
    int s_addrlen = sizeof(server_info);
    int c_addrlen = sizeof(client_info);
    memset(&server_info, 0, s_addrlen);
    memset(&client_info, 0, c_addrlen);
    server_info.sin_family = PF_INET;
    server_info.sin_addr.s_addr = inet_aton(argv[1], &server_info);
    server_info.sin_port = htons(portval);


컴파일 할 때 경고를받습니다

expected ‘struct in_addr *’ but argument is of type ‘struct sockaddr_in *’
 extern int inet_aton (const char *__cp, struct in_addr *__inp) __THROW;


  • 답변 # 1

    이것은 나를 위해 일한 솔루션입니다

    char ipadd[255];
        strcpy(ipadd,argv[1]);
        int portval = atoi(argv[2]);
        struct sockaddr_in server_info, client_info;
        int s_addrlen = sizeof(server_info);
        int c_addrlen = sizeof(client_info);
        memset(&server_info, 0, s_addrlen);
        memset(&client_info, 0, c_addrlen);
        server_info.sin_family = PF_INET;
        server_info.sin_addr.s_addr = htonl(INADDR_ANY);
        inet_aton(argv[1], &server_info.sin_addr);
        server_info.sin_port = htons(portval);
    
    
    

관련 자료

  • 이전 c# - 파일/폴더를 삭제할 수있는 관리자 권한을 얻으려면 어떻게해야합니까?
  • 다음 Excel에서 검색 기능을 사용하여 일치하는 기준을 검색하는 데 문제가 있음