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。
使用inet_ntop()
将其转换为字符串
对我有用:
inet_ntop()
AF_INET用于表示sin_addr指向IPv4网络地址。结果字符串将被复制到缓冲区变量。您应该在inet_ntop()的最后一个参数中指定缓冲区中可用的字节数。
就像您期望的那样:
struct sockaddr_in sa;
int len=20;
char buffer[len];
inet_ntop(AF_INET, &(sa.sin_addr), buffer, len);
printf("address:%s\n",buffer);