您的位置:首页 > 职场人生

Winsock程序员经典问答(中译)之前言与目录

2011-09-02 00:56 274 查看
本文档针对Winsock最常见的问题做出了解答。其中大部分问题以前都曾回复过,那时候找Winsock牛人的最佳方法还是通过邮件列表和新闻组,本文档也从这些资源中吸收了大量内容。而今,我们有了更好的提问场所。

本文档也包含了一个Winsock编程相关的信息和链接清单,对各个级别程序员都是有用的。如果您有对这个清单有纠正和补充之处,请给我发邮件。

如果想浏览离线版的文档,您可以下载本文的压缩版(440KB)。

最近更新:2011.02.21

搜索文档

您可以对任何词语在此文档中进行全文搜索。

注意:关键词Winsock在本文的每一页都会出现,将其作为搜索关键词对您没什么好处。

[b]目录[/b]

第0部分 引言

0.1 起源介绍

0.2 维护者介绍

0.3 法律事务说明

0.4 镜像

0.5 对于文档中没有的问题去哪里提问?

0.6 是否有文档更新历史的邮件列表?

0.7 本文档涵盖哪些Windows和Winsock的版本?

0.8 推荐使用的编程语言

0.9 推荐使用的协议

0.10 致谢

第1部分
Winsock基本信息


1.1 什么是Winsock?

1.2 Winsock与TCP/IP的区别

1.3 Winsock 2有哪些Winsock 1.1不具备的东西?

1.4 Winsock下一版规范什么时候发布?

1.5 Winsock支持DECNet、IPX/SPX等协议集吗?

第2部分 Winsock入门级问答

2.1 我该从哪套sockets
API入手?

2.2 网上有示例程序吗?

2.3 调用WSAStartup之前需要初始化WSAData结构体吗?

2.4 编译Winsock程序的时候报链接错误,怎么回事?

2.5 我写的Winsock程序可以和Unix
socket程序通信吗?

2.6 在各种我偏爱的语言里能使用Winsock吗?

2.7 调试Winsock程序有什么工具吗?

2.8 通过Winsock错误码怎样获取能读懂的错误信息?

2.9 Winsock不断返回WSAEWOULDBLOCK错误,我的程序有什么问题?

2.10 不搭建网络环境的情况下怎样测试Winsock应用程序?

2.11 关闭TCP
socket的正确方法是什么?

2.12 关闭连接有可能发生异常吗?

2.13 TCP连接关闭后我怎样检测?

2.14 我怎样检测异常的网络断开?

2.15 怎样才能改变Winsock函数的超时时间?

2.16 什么是窥探(MSG_PEEKING)?为什么这是不良参数?

2.17 什么是外带数据(MSG_OOB)?为什么这是不良参数?

2.18 如果MSG_PEEKING和MSG_OOB都是不良参数,那么应该给send()和recv()的标志位参数传什么呢?

第3部分
Winsock中级问答


3.1 怎样通过Winsock支持HTTP、POP3、SMTP、FTP、Telnet、NNTP等协议?

3.2 怎样通过SSL/TLS为TCP数据流加密?

3.3 怎样获取本机的IP地址?

3.4 在类似TCP这样的数据流协议上实施分包方案的正确方法是什么?

3.5 我在写一个服务器程序,哪个网络端口比较适用?

3.6 什么是TCP?

3.7 什么是UDP?

3.8 UDP有什么好处?

3.9 怎样发送一个广播包?

3.10 Winsock是线程安全的吗?

3.11 如果同一应用程序的两个线程在同一socket上调用recv(),二者会获取到相同的数据吗?

3.12 如果socket上发生了一些事情,有办法通知两个线程吗?

3.13 怎样检测时候有Internet连接?

3.14 怎样获取本地用户名?

3.15 我听说异步socket不可靠,真的吗?

3.16 什么是Nagle算法?

3.17 什么时候应该禁用Nagle算法?

3.18 什么是TCP的滑动窗口?

3.19 什么是糊涂窗口综合症?

3.20 什么是延迟ACK算法?

3.21 服务器程序应该部署在什么平台上?

第4部分
Winsock高级问答


4.1 Winsock支持原始socket吗?

4.2 怎样通过Winsock抓取局域网上的数据包?

4.3 怎样改变数据包的内容?

4.4 怎样ping另一台机器?

4.5 有可能创建映射到DLL而非应用程序的socket吗?

4.6 怎样访问路由表、ARP表、接口表等?

4.7 怎样获取本机以太网卡的MAC地址(又名硬件地址)?

4.8 我能使多少个socket同时打开?

4.9 64位socket有什么限制?

4.10 怎样使Winsock使用指定的网络接口?

4.11 FIN_WAIT_x、TIME_WAIT、CLOSE_WAIT及其它一些状态是什么意思?

4.12 什么是SYN、ACK、FIN、RST标志位?

4.13 在客户端程序里使用bind()绑定到指定端口是不是一个不好的思路?

4.14 什么是连接积压?

第5部分 资源

5.1 Winsock库与控件

5.2 示例:教学代码

5.3 示例:实用代码

5.4 其他网页资源

5.5 微软知识库文章

第6部分 示例

6.1 几种基本的Winsock程序

基本的阻塞式客户端

异步式客户端

基于CAsyncSocket的客户端

基本的阻塞式服务器

基本的多线程服务器

基本的基于select()的服务器

6.2 使用微软ICMP.dll
ping主机

6.3 使用原始socket
ping主机

6.4 在Win32中怎样传递socket?

6.5 获取本机IP地址

6.6 获取网络接口清单

6.7 怎样获取MAC地址(又名硬件地址):NetBIOS法

6.8怎样获取MAC地址(又名硬件地址):RPC法

6.9怎样获取MAC地址(又名硬件地址):SNMP法

6.10 怎样获取本机用户名?

6.11 怎样将TCP流分包?

6.12 怎样检查RAS连接?

第7部分 文章

Winsock箴言:致没有耐性的人(Warren
Young)

I/O策略面面观(Warren
Young)

有效使用TCP(Warren
Young)

概念错觉表(Winsock厂商社团)

TCP程序调试(Warren
Young)

封包嗅探器的真实内幕(Warren Young)

谈Winsock与BSD
Socket的兼容性(Warren Young)

WsControl()函数揭秘(Tom
Sanfilippo)

CSocket之害(Warren
Young)

进程间的socket传递(Warren
Young & Frank Schmied)

防火墙那些事儿(Warren Young)

非Windows系统下的Winsock(Warren
Young)

Winsock发展史:辛酸往事(Warren
Young)

第8部分 书评和软件

第9部分 术语表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: