use*_*772 4 c printf ip-address
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);
Run Code Online (Sandbox Code Playgroud)
我应该如何从server_address打印服务器的地址?使用printf.
小智 6
这对我有用:
struct sockaddr_in sa;
char buffer[INET_ADDRSTRLEN];
inet_ntop( AF_INET, &sa.sin_addr, buffer, sizeof( buffer ));
printf( "address:%s\n", buffer );
Run Code Online (Sandbox Code Playgroud)
AF_INET 用于表示 sin_addr 指向 IPv4 网络地址。结果字符串被复制到缓冲区变量。您应该在 inet_ntop() 的最后一个参数中指定缓冲区中可用的字节数。