2012-03-06 3 views
1
int server_sockfd, client_sockfd; //server and client filedescriptors 
    socklen_t server_len, client_len; 
    struct sockaddr_in server_address; //server address 
    struct sockaddr_in client_address; //client address 
    int server_port = 10000; 
    char *def_server_address ="127.0.0.1"; 

    server_len = sizeof(server_address); 
    memset(&server_address, 0, server_len); 
    server_address.sin_family = AF_INET; 

    if (x == 1) { 
     server_address.sin_addr.s_addr = INADDR_ANY;} 
    else { 
     server_address.sin_addr.s_addr = inet_addr(def_server_address); 
    } 
    server_address.sin_port = htons(server_port); 

server_address에서 서버 주소를 어떻게 인쇄해야합니까? printf 사용.서버 주소 인쇄 방법

답변

-1

그냥 당신이 기대처럼 :

struct sockaddr_in sa; 
int len=20; 
char buffer[len]; 

inet_ntop(AF_INET, &(sa.sin_addr), buffer, len); 
printf("address:%s\n",buffer); 

AF_INET은 sin_addr 포인트 있음을 나타내는 데 사용된다

printf("%s", def_server_address); 
+1

'struct sockaddr_in'은 분명히 null로 끝나는 문자열이 아닙니다 ... – ThiefMaster

+1

아니요, 맞습니다 - 대답 할 때 질문이 변경되었습니다. 답변이 취소되었습니다. – rjz

3

로 변환 IPv4 네트워크 주소. 결과 문자열은 buffer 변수에 복사됩니다. inet_ntop()의 마지막 인수에서 버퍼에 사용할 수있는 바이트 수를 지정해야합니다.