winsock编程(一)
来源:互联网 发布:android xml布局优化 编辑:程序博客网 时间:2024/04/26 04:51
一.Windows Sockets:背景知识
这篇文章介绍了WindowsSockets的目的和历史,包括三个内容:
socket的定义。
SOCKET句柄类型的描述。
socket的应用领域。
WindowsSockets规范为Windows定义了一套面向字节兼容的网络编程接口。WindowsSockets基于UNIX socket(伯克利软件发行机构,BSD,release 4.3)实现上。该规范包含了BSD风格的socket和Windows的扩展规范。使用WindowsSockets能保证你的程序能通过任何网络通信,只要网络能支持WindowsSocketsAPI。在Win32中,WindowsSockets是线程安全的。
许多软件商在协议层支持WindowsSockets,包括TCP/IP、XNS、DECNet、IPX/SPX以及其他的协议。尽管WindowsSockets规范定义了TCP/IP的抽象,其他网络协议也能和WindowsSockets一致,只要这些协议能提供它自己的DLL实现。使用WindowsSockets的典型商业应用程序案例包括:XWindowServer,终端仿真,和电子邮件系统。
说明:请记住WindowsSockets的目的是为了抽象网络底层通信协议,所以你不一定要对底层协议非常了解,你的程序也能运行在任何支持sockets的网络上。因此,本文不讨论详细的网络通信协议。
MFC提供了两个类来支持使用WindowsSocketsAPI编程。其中之一是CSocket,提供一个高层次的抽象来简化你的网络通信编程。更多MFC支持socket的信息,请参考:Windows Sockets网络编程,概览。
Windows Sockets规范:Windows下的网络计算开放规范接口,现在是1.1版本,是作为一个开放的网络标准来开发的,由很大数目的个人和组织在TCP/IP开发,并且是免费使用。Socket编程现在编程了社区的一个交流专题,在网络协议板块下。规范在Win32SDK中可用。
提示:由于socket使用Internet协议簇,所以它是计划运行在“信息高速公路”的程序的开发者的首选。
1.SOCKET的定义
Socket是网络通信的端点(endpoint)――Widows Sockets应用程序通过它来发送或者接受网络数据包。一个socket有一个类型,并且和一个运行的进程关联,它也可能有一个名字。目前为止,socket一般只是和socket交流数据,他们使用的是Internet协议簇。
两边的Socket都是双向的:他们是能在两个方向传递的数据流(全双工)。
两个socket类型可以使用:
Stream Socket:
Stream Socket为不记录边界的数据流提供――字节流。流保证被投递并且正确的序列和不重复的投递。
Datagram Socket:
Datagram Socket支持面向记录的数据流,不保证被正确投递,并且可能不会按照发送的序列达到,也可能重复。
“正确的序列”意思是包按照它们被发送的次序到达。“不重复的投递”意思是对于每个唯一的包你只会收到一次。
提示:一些网络协议,如XNS,流能面向记录――记录的流而不是字节流。尽管在TCP/IP协议中是字节流,windows sockets提供一定层次和底层协议无关的抽象。
若你需要了解这些类型,以及在何种情况下应该用何种socket,请参考:windows socket:stream socket和windows sockets:datagram socket。
2.SOCKET数据类型
每个MFC socket对象封装了一个Windows sockets对象的句柄。这个句柄的类型是SOCKET。SOCKET类型和窗口的HWND非常类似。MFC socket类提供了在这个封装的句柄的操作。
SOCKET数据类型在win32 sdk中有详细的说明。请参考windows socket主题下的socket数据类型和错误代码。
3.SOCKET的应用领域
Socket非常有用,至少在下面三个领域:
Client/Server模型
对等网络,如聊天程序。
RPC调用,调用应用程序象调用函数一样方便。
提示:使用MFC socket的情况是通信的两端都可以使用MFC编写:两边都用MFC。关于这个主题的更多信息,以及如何处理和非MFC应用程序通信的问题,请参考:windows sockets:字节序列
这篇文章介绍了WindowsSockets的目的和历史,包括三个内容:
socket的定义。
SOCKET句柄类型的描述。
socket的应用领域。
WindowsSockets规范为Windows定义了一套面向字节兼容的网络编程接口。WindowsSockets基于UNIX socket(伯克利软件发行机构,BSD,release 4.3)实现上。该规范包含了BSD风格的socket和Windows的扩展规范。使用WindowsSockets能保证你的程序能通过任何网络通信,只要网络能支持WindowsSocketsAPI。在Win32中,WindowsSockets是线程安全的。
许多软件商在协议层支持WindowsSockets,包括TCP/IP、XNS、DECNet、IPX/SPX以及其他的协议。尽管WindowsSockets规范定义了TCP/IP的抽象,其他网络协议也能和WindowsSockets一致,只要这些协议能提供它自己的DLL实现。使用WindowsSockets的典型商业应用程序案例包括:XWindowServer,终端仿真,和电子邮件系统。
说明:请记住WindowsSockets的目的是为了抽象网络底层通信协议,所以你不一定要对底层协议非常了解,你的程序也能运行在任何支持sockets的网络上。因此,本文不讨论详细的网络通信协议。
MFC提供了两个类来支持使用WindowsSocketsAPI编程。其中之一是CSocket,提供一个高层次的抽象来简化你的网络通信编程。更多MFC支持socket的信息,请参考:Windows Sockets网络编程,概览。
Windows Sockets规范:Windows下的网络计算开放规范接口,现在是1.1版本,是作为一个开放的网络标准来开发的,由很大数目的个人和组织在TCP/IP开发,并且是免费使用。Socket编程现在编程了社区的一个交流专题,在网络协议板块下。规范在Win32SDK中可用。
提示:由于socket使用Internet协议簇,所以它是计划运行在“信息高速公路”的程序的开发者的首选。
1.SOCKET的定义
Socket是网络通信的端点(endpoint)――Widows Sockets应用程序通过它来发送或者接受网络数据包。一个socket有一个类型,并且和一个运行的进程关联,它也可能有一个名字。目前为止,socket一般只是和socket交流数据,他们使用的是Internet协议簇。
两边的Socket都是双向的:他们是能在两个方向传递的数据流(全双工)。
两个socket类型可以使用:
Stream Socket:
Stream Socket为不记录边界的数据流提供――字节流。流保证被投递并且正确的序列和不重复的投递。
Datagram Socket:
Datagram Socket支持面向记录的数据流,不保证被正确投递,并且可能不会按照发送的序列达到,也可能重复。
“正确的序列”意思是包按照它们被发送的次序到达。“不重复的投递”意思是对于每个唯一的包你只会收到一次。
提示:一些网络协议,如XNS,流能面向记录――记录的流而不是字节流。尽管在TCP/IP协议中是字节流,windows sockets提供一定层次和底层协议无关的抽象。
若你需要了解这些类型,以及在何种情况下应该用何种socket,请参考:windows socket:stream socket和windows sockets:datagram socket。
2.SOCKET数据类型
每个MFC socket对象封装了一个Windows sockets对象的句柄。这个句柄的类型是SOCKET。SOCKET类型和窗口的HWND非常类似。MFC socket类提供了在这个封装的句柄的操作。
SOCKET数据类型在win32 sdk中有详细的说明。请参考windows socket主题下的socket数据类型和错误代码。
3.SOCKET的应用领域
Socket非常有用,至少在下面三个领域:
Client/Server模型
对等网络,如聊天程序。
RPC调用,调用应用程序象调用函数一样方便。
提示:使用MFC socket的情况是通信的两端都可以使用MFC编写:两边都用MFC。关于这个主题的更多信息,以及如何处理和非MFC应用程序通信的问题,请参考:windows sockets:字节序列
- winsock编程(一)
- winsock编程使用HTTP代理(一)
- Winsock完成端口编程与应用(一)(转载)
- Winsock 编程(序言)
- winsock编程(二)
- winsock编程(三)
- winsock编程(四)
- winsock编程(五)
- winsock编程(六)
- Winsock函数(一)
- Window网络编程之Winsock(一)起步
- 1130 WINSOCK的API编程开发,一
- 实验一 Winsock编程接口实验
- Winsock编程笔记(1)
- WinSock学习笔记(一)
- WinSock学习笔记(一)
- WinSock学习笔记(一)
- WinSock学习笔记(一)
- MAPINFO电子地图基础知识
- 禁止显示IE7和火狐的地址栏下拉菜单
- Oracle共享服务器配置
- 【36周】
- 更新表的程序
- winsock编程(一)
- C#实现文件的压缩和解压缩
- 罕见的知的手机4打隐藏功能
- C# 编码规则,初学者一定要看
- bboss persistent框架调用存储过程的返回结果为xml串的使用方法
- DotNet卸载程序
- 取Gridview模板列Checkbox所選的記錄
- 非常详细的IFRAME属性详细介绍参考手册
- linux 下挂载ntfs分区报错configure failed for kernel[解决]