1.windows的socket函数分为两类,一类是Socket Functions(符合Berkeley Sockets routines)另一类是Microsoft Windows-Specific Extension Functions(对Berkeley Sockets routines的扩展)它们之间是什么关系有何区别。各自有何特性。 (此题30分)
2.关于WSAStartup函数。在MSDN中,提到The WSAStartup function must be the first Windows Sockets function called by an application or DLL. 在windows控制台中编写的Windows Socket API程序如不用此函数Socket将无法创建成功。而通过MFC程序生成向导生成的Dialog程序中,不用WSAStartup函数并不影响创建Socket。为什么? (此题20分)
3.recv函数合适返回接收到的数据?在接收数据填满buffer和填不满的情况下分别说明一下 (此题20分)4.bind函数。做为客户机,可以不用bind函数,但是也可以用。此时我的机器ip是172.x.x.x 但是我用bind绑定一个192.x.x.x的地址并不出错,这个192.x.x.x究竟绑定成功了吗?函数调用依次为 socket,bind,connect,recv (此题30分)
2.关于WSAStartup函数。在MSDN中,提到The WSAStartup function must be the first Windows Sockets function called by an application or DLL. 在windows控制台中编写的Windows Socket API程序如不用此函数Socket将无法创建成功。而通过MFC程序生成向导生成的Dialog程序中,不用WSAStartup函数并不影响创建Socket。为什么? (此题20分)
3.recv函数合适返回接收到的数据?在接收数据填满buffer和填不满的情况下分别说明一下 (此题20分)4.bind函数。做为客户机,可以不用bind函数,但是也可以用。此时我的机器ip是172.x.x.x 但是我用bind绑定一个192.x.x.x的地址并不出错,这个192.x.x.x究竟绑定成功了吗?函数调用依次为 socket,bind,connect,recv (此题30分)
3、recv有返回值得呀,还要说明什么?
bind我绑定了一个并不是我这台机器的地址,也能编译,没有出错,运行也未出错。我用绑定此错误ip的socket连telnet,未出错既然Microsoft Windows-Specific Extension Functions对Socket Functions封装,还要调用WSAStartup干什么?就是这点不明白啊
1.提供了更多的I/O模型:
除bsd socket的select外,还有WSAAsyncSelect、WSAEventSelect、重叠I/O、
scatter/gather类型的I/O、支持IOCP等
2.细化的多协议支持以及对一些新特性的支持
如WSASocket包含一个LPWSAPROTOCOL_INFO参数
如QOS
3.细节上的强化
如WSAAccept有一个回调函数的参数,用于决定某个连接被拒绝还是接受
如AcceptEx可以在接受连接的同时读取客户端发送的第一块数据,另外还支持重叠I/O
等等
mfc向导对socket初始话的支持主要是自动生成代码调用AfxSocketInit(在InitInstance中)
类似的还包括AfxOleInit等
如果bind一个错误地址或者端口
客户端socket应该connect不上来的吧