请教:为何在windows下调用inet_pton函数,运行时总是说无法定位.

s_51563946 2009-08-24 12:53:56
在WinSock2.h里面确实是包含了inet_pton声明的,并且也编译通过了.但在运行的时候却提示无法定位到inet_pton的符号.
难道windows.h下的WinSock2.dll里面没有这个函数的定义?
请教windows下实现同样功能函数的名字是什么?
...全文
2057 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolomg 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

使用inet_addr替代, 举例如下:

linux下代码:
const char *PORT = "1111";
const char *SERVER = "127.0.0.1";
int err, sd;
struct sockaddr_in sa;

/* connects to server
*/
sd = socket (AF_INE……
[/Quote]
+1
w22407 2011-09-23
  • 打赏
  • 举报
回复 1
使用inet_addr替代, 举例如下:

linux下代码:
const char *PORT = "1111";
const char *SERVER = "127.0.0.1";
int err, sd;
struct sockaddr_in sa;

/* connects to server
*/
sd = socket (AF_INET, SOCK_STREAM, 0);

memset (&sa, '\0', sizeof (sa));
sa.sin_family = AF_INET;
sa.sin_port = htons (atoi (PORT));
inet_pton (AF_INET, SERVER, &sa.sin_addr);


改写为windows下代码
const char *PORT = "1111";
const char *SERVER = "127.0.0.1";
int err, sd;
struct sockaddr_in sa;

/* connects to server
*/
sd = socket (AF_INET, SOCK_STREAM, 0);

memset (&sa, '\0', sizeof (sa));
sa.sin_family = AF_INET;
sa.sin_port = htons (atoi (PORT));
sa.sin_addr.s_addr = inet_addr(SERVER);
s_51563946 2009-08-24
  • 打赏
  • 举报
回复
另外说一句,由于包含Winsock2.h之前包含windows.h会报错(该死的微软).所以我加上了WIN32_LEAN_AND_MEAN的宏定义.不知道这样会不会有问题?
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在计算机网络编程中,IP地址的转换是一项常见任务,尤其是随着IPv4和IPv6的广泛应用。将点分十进制IP地址转换为网络字节序的二进制数值,以及进行反向转换,变得至关重要。inet_pton()和inet_ntop()函数是现代网络编程中用于处理IPv4和IPv6地址转换的常用函数inet_pton()函数能够将点分十进制格式的IP地址转换为适用于网络传输的二进制数值。该函数支持IPv4和IPv6地址,是随着IPv6发展而引入的。其函数原型为: 其中,family参数用于指定地址族,AF_INET表示IPv4地址,AF_INET6表示IPv6地址。strptr是指向包含点分十进制IP地址字符串的指针,addrptr是指向足够大内存块的指针,用于存储转换后的二进制数值。函数返回值为1表示成功,0表示输入字符串无效,-1表示出现错误。例如,将IPv4地址“..*.**”转换为二进制数值的代码如下: inet_ntop()函数则用于将网络字节序的二进制数值转换为点分十进制格式的IP地址字符串。其函数原型为: family参数同样指定地址族类型,addrptr是指向二进制数值的指针,strptr是用于存储转换后字符串的缓冲区,len参数指定缓冲区大小。函数成功时返回指向转换后字符串的指针,出错时返回NULL。对于IPv4地址,传统的inet_ntoa()函数也可以实现网络字节序IPv4地址到点分十进制字符串的转换,但其返回值指向静态分配的内存,多次调用会导致值被覆盖。而inet_pton()和inet_ntop()函数在转换过程中无需额外处理字节顺序问题,它们自身已解决了网络字节序和主机字节序的转换。例如,使用inet_ntop()将二进制数值转换为点分十进制格式的代码如下: 总之,ine

4,386

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧