无法将 ip 地址从字符串复制到 sockaddr_in
Unable to copy ip address from string to sockaddr_in
我正在尝试将 IP 地址从字符串复制到结构 sockaddr_in,但不知何故弹出了一些错误。
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char *buf = "128.10.25.102:30015";
char ip[30];
struct sockaddr_in s1_addport;
int i = 0;
while (buf[i] != ':') i++;
strncpy(ip, &buf[0], i);
ip[strlen(ip)] = '[=11=]';
printf("ip: %s, strlen:%zu\n",ip,strlen(ip));
inet_aton(ip,&s1_addport.sin_addr);
printf("Server IP: %s\n",inet_ntoa(s1_addport.sin_addr));
return 0;
}
以上代码的输出显示:
ip: 128.10.25.102, strlen:13
Server IP: 0.0.0.0
从 ip
字符串复制值时出现一些错误,我无法弄清楚。可能是什么原因?
这是您的 pastebin 代码中的问题:
ip[strlen(ip)]='[=10=]';
(尝试附加空终止符但使用 strlen,它本身取决于是否存在空终止符)。
修复如下:
....
while(buf[i]!=':')
i++;
strncpy(ip,&buf[0],i);
ip[i]='[=11=]';
puts(ip);
....
我正在尝试将 IP 地址从字符串复制到结构 sockaddr_in,但不知何故弹出了一些错误。
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char *buf = "128.10.25.102:30015";
char ip[30];
struct sockaddr_in s1_addport;
int i = 0;
while (buf[i] != ':') i++;
strncpy(ip, &buf[0], i);
ip[strlen(ip)] = '[=11=]';
printf("ip: %s, strlen:%zu\n",ip,strlen(ip));
inet_aton(ip,&s1_addport.sin_addr);
printf("Server IP: %s\n",inet_ntoa(s1_addport.sin_addr));
return 0;
}
以上代码的输出显示:
ip: 128.10.25.102, strlen:13
Server IP: 0.0.0.0
从 ip
字符串复制值时出现一些错误,我无法弄清楚。可能是什么原因?
这是您的 pastebin 代码中的问题:
ip[strlen(ip)]='[=10=]';
(尝试附加空终止符但使用 strlen,它本身取决于是否存在空终止符)。
修复如下:
....
while(buf[i]!=':')
i++;
strncpy(ip,&buf[0],i);
ip[i]='[=11=]';
puts(ip);
....