Skip to content

Commit

Permalink
inet_ntoa->inet_ntop, inet_addr->inet_pton
Browse files Browse the repository at this point in the history
  • Loading branch information
cbsheng committed Aug 4, 2015
1 parent ec89537 commit 0c714bc
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 7 deletions.
23 changes: 20 additions & 3 deletions example/UDPclient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,18 @@
int main()
{
int cli_sock = socket(AF_INET, SOCK_DGRAM, 0);

//conn_addr 是要连接的服务器地址结构
struct sockaddr_in conn_addr;
conn_addr.sin_family = AF_INET;
conn_addr.sin_port = htons(8345);
conn_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
//conn_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
//将 inet_addr() 改用 inet_pton() 这个现代的方法,支持 IPV4 和 IPV6
if (inet_pton(AF_INET, "127.0.0.1", &conn_addr.sin_addr) == -1) {
printf("inet_pton error\n");
close(cli_sock);
return 0;
}

//serv_addr 是用来存储 recvfrom 中的地址结构
struct sockaddr_in serv_addr;
Expand All @@ -27,9 +34,19 @@ int main()
int n = recvfrom(cli_sock, buf, sizeof(buf), 0,
(struct sockaddr*)&serv_addr,
&serv_addr_len );

if (n > 0) {
num++;
printf("recv data from %s : %d %c\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port), buf[0]);
num++;
//将 inet_ntoa() 改用 inet_ntop() 这个现代方法,支持 IPV4 和 IPV6
//printf("recv data from %s : %d %c\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port), buf[0]);
//INET_ADDRSTRLEN 是标识 IPV4 地址展现字符串的大小常量,INET6_ADDRSTRLEN是 IPV6 的
char serv_ip[INET_ADDRSTRLEN];
if (inet_ntop(AF_INET, &serv_addr.sin_addr, serv_ip, sizeof(serv_ip)) == NULL) {
printf("inet_ntop error\n");
close(cli_sock);
return 0;
}
printf("recv data from %s : %d %c\n", serv_ip, ntohs(serv_addr.sin_port), buf[0]);
}
++c;
}
Expand Down
13 changes: 12 additions & 1 deletion example/UDPserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,23 @@
int main()
{
int serv_sock = socket(AF_INET, SOCK_DGRAM, 0);

//服务端自己的地址结构
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8345);
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
printf("bind in %s : %d\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));

//将 inet_ntoa() 改用 inet_ntop() 这个现代方法,支持 IPV4 和 IPV6
//printf("bind in %s : %d\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));
//INET_ADDRSTRLEN 是标识 IPV4 地址展现字符串的大小常量,INET6_ADDRSTRLEN是 IPV6 的
char serv_ip[INET_ADDRSTRLEN];
if (inet_ntop(AF_INET, &serv_addr.sin_addr, serv_ip, sizeof(serv_ip)) == NULL) {
printf("inet_ntop error\n");
close(serv_sock);
return 0;
}
printf("bind in %s : %d\n", serv_ip, ntohs(serv_addr.sin_port));

if (bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
printf("bind error\n");
Expand Down
20 changes: 18 additions & 2 deletions example/echoclient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,25 @@ int main()

struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_port = htons(8123);
printf("bind in %s : %d\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));
//serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
//将 inet_addr() 改用 inet_pton() 这个现代的方法,支持 IPV4 和 IPV6
if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) == -1) {
printf("inet_pton error\n");
close(cli_sock);
return 0;
}

//将 inet_ntoa() 改用 inet_ntop() 这个现代方法,支持 IPV4 和 IPV6
//printf("bind in %s : %d\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));
//INET_ADDRSTRLEN 是标识 IPV4 地址展现字符串的大小常量,INET6_ADDRSTRLEN是 IPV6 的
char serv_ip[INET_ADDRSTRLEN];
if (inet_ntop(AF_INET, &serv_addr.sin_addr, serv_ip, sizeof(serv_ip)) == NULL) {
printf("inet_ntop error\n");
close(cli_sock);
return 0;
}
printf("bind in %s : %d\n", serv_ip, ntohs(serv_addr.sin_port));

int conn = connect(cli_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
if (conn == -1) {
Expand Down
12 changes: 11 additions & 1 deletion example/echoserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,18 @@ int main()
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(8123);
printf("bind in %s : %d\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));

//将 inet_ntoa() 改用 inet_ntop() 这个现代方法,支持 IPV4 和 IPV6
//printf("bind in %s : %d\n", inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));
//INET_ADDRSTRLEN 是标识 IPV4 地址展现字符串的大小常量,INET6_ADDRSTRLEN是 IPV6 的
char serv_ip[INET_ADDRSTRLEN];
if (inet_ntop(AF_INET, &serv_addr.sin_addr, serv_ip, sizeof(serv_ip)) == NULL) {
printf("inet_ntop error\n");
close(server_sock);
return 0;
}

printf("bind in %s : %d\n", serv_ip, ntohs(serv_addr.sin_port));
if (bind(server_sock, (struct sockaddr*)&serv_addr, serv_addr_len) < 0) {
printf("bind error\n");
return 0;
Expand Down

0 comments on commit 0c714bc

Please sign in to comment.