关于SOCKADDR_STORAGE的问题

dwen20 2008-07-09 02:13:47
最近在学windows网络编程,用了Network Programming for Microsoft Windows 2nd的配套光盘调试。
问题出在chapter05中的WSAASyncSelect目录

我直接用VS2008 Professional的Nmake程序编译该目录下的makefile文件,提示错误,主要是SOCKADDR_STORAGE结构无
法识别,但是查Msdn说这个结构是包含在Winsock2.h中的,其实是在ws2def.h文件中声明,只不过ws2def.h
被include进了winsock2.h文件中,不过程序里明明是包含了这个winsock2.h文件的,怎么会找不到呢?
主要的源文件头文件包含顺序如下:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

不知道是否和彼此的顺序有关。
makefile文件内容如下:
!include <win32.mak>

objs=asyncserver.obj resolve.obj

all: asyncserver.exe

.cpp.obj:
$(cc) $(cdebug) $(cflags) $(cvarsmt) $*.cpp

asyncserver.exe: $(objs) $(common_objs)
$(link) $(linkdebug) $(conlflags) -out:asyncserver.exe $(objs) $(conlibsmt) ws2_32.lib user32.lib gdi32.lib

clean:
del *.obj
del *.exe
del *.pdb


请高手赐教
...全文
440 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
y396569323 2011-06-19
  • 打赏
  • 举报
回复
能问下是如何解决得吗
dwen20 2008-07-26
  • 打赏
  • 举报
回复
还是结贴吧,问题也自己搞定了。
dwen20 2008-07-12
  • 打赏
  • 举报
回复
没人回复居然,没有人学过Windows网络编程吗?
下载代码方式:https://pan.quark.cn/s/21d5bdb96874 文档与源码均为本人独立完成或进行过修改,经过修改的ntpclient程序已在实际项目中有应用(其实现过程相对直接)。关于支持IPv4和IPv6的socket编程,其核心内容主要体现在以下几个方面:1. 相关的常用套接字结构体及通用结构体;2. 实现从IPv4到IPv6的socket程序迁移;3. 如何设计同时兼容IPv4和IPv6的程序架构;4. IPv6环境下服务器端与客户端的实现方式;5. 一个支持IPv6功能的ntpclient程序实例。IPv4与IPv6的socket编程在现代网络开发中扮演着关键角色,尤其是在全球向IPv6过渡的背景下。IPv4和IPv6分别是互联网协议的两个不同版本,其中IPv4采用4字节地址方案,而IPv6则针对IPv4地址短缺问题引入了128字节的地址体系。在开展IPv4至IPv6的socket编程兼容性工作时,必须关注以下要素:1. **通用结构体**:- `sockaddr_storage` 结构体作为兼容IPv4和IPv6的通用设计,其容量足以承载任何类型的地址结构。在处理未知地址类型时,可先初始化为`sockaddr_storage`,随后根据需求转换为`sockaddr_in`或`sockaddr_in6`。2. **IPv4到IPv6的迁移**:- 在迁移阶段,应确保`bind()`或`connect()`函数中的地址族参数采用`AF_UNSPEC`,以便系统自动选择最合适的IPv4或IPv6地址。- 使用`getaddrinfo()`函数替代硬编码的地址与端口,该函数能返回包含IPv4和IPv6地址的链表。- 当调用`acce...

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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