没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论



















1、 熟悉 Visual C++的基本操作。
2、 基本了解基于对话框的 windows 应用程序的编写过程。
3、 对于 Windows Socket 编程建立初步概念。
1、 应用 Visual C++中 MFC CSocket 类,实现网络数据传输。
2、 仿照本实验步骤,制作实用的局域网一对一聊天程序。
一、 Windows Socket 和套接口的基本概念
网际协议( Internet Protocol, IP)是一种用于互联网的网络协议,已经广为人知。它可
广泛用于大多数计算机操作系统上,也可用于大多数局域网 L A N(比如办公室小型网
络)和广域网 WAN(比如说互联网)。从它的设计看来,IP 是一个无连接的协议,不能
保证数据投递万无一失。两个上层协议(TCP 和 UDP)依赖 IP 协议进行数据通信。
如果希望在 Microsoft Windows 下通过 TCP 和 UDP 协议建立网络应用程序,需要使用
Winsock 套接口编程技术。
套接口,就是一个指向传输提供者的句柄。Win32 中,套接口不同于文件描述符,所
以它是一个独立的类型—SOCKET。Windows Sockets 描述定义了一个 Microsoft Windows
的网络编程界面, 它是从 Unix Socket 的基础上发展而来的,为 Windows TCP/IP 提供了一
个 BSD 型的套接字规范,除与 4.3BSD Unix Sockets 完全兼容外,还包括一个扩充文件,
通 过 一 组附 加 的 API 实 现 Windows 式( 即 事 件 驱 动 ) 的 编 程风 格 ; 而 Winsock 则是在
Microsoft Windows 中进行网络 应用 程 序 设 计 的接口。 Windows 在 Internet 支 配 域 中的
TCP /IP 协议定义了 Winsock 网络编程规范,融入了许多新特点。使用 Socket 的目的是使
用户在网络协议上工作而不必对该网络协议有非常深入的了解。此外,这样编写的程序可
被迅速移植到任何支持 Socket 的网络系统中去。
Winsock 提供了一种可为指定传输协议打开、计算和关闭会话的能力。在 Windows 下,
TCP/IP 上层模型在很大程度上与用户的 Winsock 应用有关。换而言之,用户的 Winsock 应
用控制了会话的方方面面,必要时,还会根据程序的需要格式化数据。
套接口有三种类型:
流式套接口,数据报套接口及原始套接口。
流式套接口定义了一种可靠的面向连接的服务(利用TCP协议),实现了无差错无重复
的顺序数据传输。数据报套接口定义了一种无连接的服务(UDP协议),数据通过相互独
立的报文进行传输,是无序的,并且不保证可靠和无差错。原始套接口允许对低层协议如
IP或ICMP直接访问,主要用于新的网络协议实现的测试等。
面向连接服务器处理的请求往往比较复杂,不是一来一去的请求应答所能解决的,而
且往往是并发服务器。使用面向连接的套接口编程,可以通过(图1-1)来表示。

无连接服务器一般都是面向事务处理的,一个请求一个应答就完成了客户程序与服务
程序之间的相互作用。若使用无连接的套接口编程,程序的流程可以用(图1-2)表示。
原始套接口的介绍和使用将放在第四章讲解。
套接口工作过程如下:服务器首先启动,通过调用socket()建立一个套接口,然后调
用bind()将该套接口和本地网络地址联系在一起,再调用listen()使套接口做好侦听的准备,
并规定它的请求队列的长度,之后就调用accept()来接收连接。客户在建立套接口后就可
调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用
read()和write()来发送和接收数据。最后,待数据传送结束后,双方调用close()关闭套接口。
(以下图片摘自MSDN)
图 1-1:面向连接套接口的通信过程

在网络编程中,掌握端口的概念十分重要
关于端口:基于TCP/IP协议的网络中,计算机都分配有一个I P地址,用一个3 2位二进制数
来表示,正式的称呼是“ I P v 4地址”。客户机需要通过T C P或U D P和服务器通信时,必须
指定服务器的I P地址和服务端口号。另外,服务器打算侦听接入客户机请求时,也必须指
定一个I P地址和一个端口号。在选择端口时,应用必须特别小心,因为有些可用端口号是
为“已知的”(即固定的)服务保留的(比如说文件传输协议和超文本传输协议,即FTP(21
号端口)和HTTP(一般为8080端口)。“已知的协议”,即固定协议,采用的端口由“互联网编号
分配认证(IANA)”控制和分配, RFC 1700中说明的编号。从本质上说,端口号分为下面
这三类:“已知”端口、已注册端口、动态和(或)私用端口。
“已知“端口0~1023由IANA控制,是在UNIX中为固定服务保留的。
已注册的端口1024~49151是IANA列出来的,供普通用户的普通用户进程或程序使用。
49152~65535是动态和(或)私用端口。
普通用户应用应该选择 1024~49151 之间的已注册端口,从而避免端口号已被另一个应用或
系统服务所用。此外,49152~65535 间的端口可自由使用,因为 IANA 这些端口上没有注
册服务。
到 1992 年为止,人们所熟知的端口号介于 1-255 之间。256-1023 之间的端口号
通常都是由 Unix 系统占用,以提供一些特定的 Unix 服务。现在 IANA 管理 1-1023 之
间所有的端口号。
Internet 扩展服务与 Unix 特定服务之间的一个差别就是 Telnet 和 Rlogin。它们二者
都允许通过计算机网络登录到其他主机上。Telnet 是采用端口号为 23 的 TCP/IP 标准且几
图 1-2:无连接套接口的通信过程

乎可以在所有操作系统上进行实现。相反,Rlogin 最开始时只是为 Unix 系统设计的(尽
管许多非 Unix 系统现在也提供该服务),因此在 80 年代初,它的有名端口号为 513。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以
了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运
行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
大多数 TCP/IP 实现给临时端口分配 1024-5000 之间的端口号。大于 5000 的端口
号是为其他服务器预留的(Internet 上并不常用的服务)
①
保留端口号
Unix 系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一
个保留端口号。
这些端口号介于 1 到 1023 之间,一些应用程序(如有名的 Rlogin,26.2 节)将它
作为客户与服务器之间身份认证的一部分。
②
而 Windows 中的端口分配又有所不同,只要不和已知端口冲突,基本可以自由使用。
二、MFC 对 Socket 编程的封装类简介
Microsoft Windows Class Library(MFC) 中提供了较高级封
装的类用来实现网络通信。图中给出了 CSocket 类的继承关系。
CAsyncSocket 类封装了 Windows Sockets API 函数,提供了
较低层的与 Windows Sockets 对话接口,一般适合于有相当
水平的网络编程基础者使用,可方便地进行底层的网络事
件通知及信息回叫控制等操作。
Csocket 类派生于 CAsyncSocket,它继承了父类中一些
常用易懂得的 Windows Sockets API 函数,并对 CAsyncSocket 中底层的较难控制的一
些 API 函数或成员函数进行了处理,使得网络传输简捷易用。同时它支持模块化的后
台信息处理,解决了 CAsyncSocket 中较难克服的多线程处理。
下面将介绍用 Visual C++ 在 Windows 中实现 Socket 的 CSocket 类关成员函数( 这些成
员函数实际上是从 CAsyncSocket 类继承来的)。
成员函数和参数说明
1 、BOOL Create( UINT nSocketPort = 0 , int nSocketType = SOCK_STREAM , long
lEvent = FD_READ |FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|
FD_CLOSE,LPCTSTR lpszSocketAddress = NULL )
<<< 该函数用来建立 Socket。返回值如果函数成功则返回非零值;否则返回 0。其中:
nSocketPort :为所选择的 Socket 端口,一般要大于 1023,如果该参数为 0,则由系统
选定一端口,默认值为 0;
①
《TCP/IP 协议详解》 richard stevens p.13① 的译文
②
《TCP/IP 协议详解》 richard stevens p.13③ 的译文
剩余15页未读,继续阅读

njzhufang13
- 粉丝: 0
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (2025)社工初级考试试题附含答案.docx
- (2025)社工初级考试试题含答案.docx
- 电信5G协优资格认证考试题库附含答案.docx
- 电信协优(含LTE、5G)资格认证考试题库附答案.docx
- 电信协优(含LTE、5G)资格认证考试题库附含答案.docx
- 电信协优(含LTE、5G)资格认证题库附答案.docx
- (2025)电梯安全管理员题库及答案.doc
- (2025)电业安全工作规程考试试题及答案.doc
- (2025)电业安全工作规程试题及答案.doc
- (2025)吊车司机安全培训考试题库及答案.doc
- (2025)辐射安全与防护培训考试题及答案.doc
- (2025)辐射安全与防护培训题库(含答案).doc
- (2025)辐射安全与防护培训题库及答案.doc
- 2025安全生产培训教育考试题库及答案.doc
- 2025安全生产培训教育考试试题及答案.doc
- 2025安全生产培训教育试题及答案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
- 3
前往页