设为首页 加入收藏

TOP

1.1.1 Visual C++网络编程概述(3)
2013-10-07 15:52:01 来源: 作者: 【 】 浏览:78
Tags:1.1.1 Visual 网络编程 概述

1.1.1  Visual C++(www.cppentry.com)网络编程(www.cppentry.com)概述(3)

4. 搭建开发环境

在Visual C++(www.cppentry.com) 6.0环境下进行Winsock的API编程(www.cppentry.com)开发,需要在项目中导入以下三个文件,否则会发生编译错误。

WINSOCK.h:WINSOCK API的头文件,需要包含在项目中。

WSOCK32.lib:WINSOCK API链接库文件,使用时一定要把它作为项目的非默认的链接库包含到项目文件中去。

WINSOCK.dll:WINSOCK的动态链接库,位于Windows的安装目录下。

5. 两个常用的数据结构

套接字是网络通信过程中端点的抽象表示,在实现中以句柄的形式创建,包含了进行网络通信所必需的5种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址和远程进程的协议端口。

WinSock编程(www.cppentry.com)中常用的数据结构有sockaddr_in和in_addr。

(1) sockaddr_in结构

WinSock通过sockaddr_in结构对有关Socket的信息进行了封装:

  1. struct sockaddr_in {  
  2. short  sin_family;  
  3. unsigned  short sin_port;  
  4. IN_ADDR     sin_addr;  
  5. char  sin_zero[8];  
  6. }; 

上述结构中各个参数的具体说明如下。

sin_family:指网络中标识不同设备时使用的地址类型,对于IP地址,它的类型是AF_INET。

sin_port:指Socket对应的端口号。

sin_addr:是一个结构,将IP进行了封装。

sin_zero:一个用来填充结构的数组,字符全为0,这个结构对于不同地址类型可以是相同的大小。

(2) in_addr结构

in_addr结构对IP地址进行了封装,既可以用4个单字节数表示,也可以转换为两个双字节数表示或一个四字节数表示。这样定义是为了方便使用,例如在程序中初始化IP时,可以传入4个单字节整数,而在函数间传递这个值时,可以将其转换成一个四字节整数使用。in_addr结构定义如下:

  1. struct in_addr {  
  2. union {  
  3. struct { u_char s_b1, s_b2, s_b3, s_b4; }   S_un_b;  
  4. struct { u_short s_w1, s_w2; } S_un_w;  
  5. u_long S_addr;  
  6. } S_un;  
  7. };  

6. Windows Sockets基础

MFC类库中,几乎封装了Windows Sockets的全部功能。在接下来的内容中,将简单介绍两个最常用的套接字相关类--CAsyncSocket类和CSocket类。

(1) CAsyncSocket类

在微软基础类库中,CAsyncSocket类封装了异步套接字的基本功能。用户使用该类进行网络数据传输的步骤如下。

① 调用构造函数创建套接字对象。

② 如果创建服务器端套接字,则调用函数Bind()绑定本地IP和端口,然后调用函数Listen()监听客户端的请求。如果请求到来,则调用函数Accept()响应该请求。如果创建客户端套接字,则直接调用函数Connect()连接服务器即可。

③ 调用Send()等功能函数进行数据传输与处理。

④ 关闭或销毁套接字对象。

(2) CSocket类

CSocket类派生于CAsyncSocket类。该类不但具有CAsyncSocket类的基本功能,还具有序列化功能。用户在实际编程(www.cppentry.com)中,通过将CSocket类与CSocketFile类和CArchive类一起使用,能够很好地管理数据以及发送数据。用户使用该类进行网络编程(www.cppentry.com)的步骤如下。

① 创建CSocket类对象。

② 如果创建服务器端套接字,则调用函数Bind()绑定本地IP和端口,然后调用函数Listen()监听客户端的请求。如果请求到来,则调用函数Accept()响应该请求。如果创建客户端套接字,则直接调用函数Connect()连接服务器即可。

③ 创建与CSocket类对象相关联的CSocketFile类对象。

④ 创建与CSocketFile类相关联的CArchive对象。

⑤ 使用CArchive类对象在客户端和服务器之间进行数据传输。

⑥ 关闭或销毁CSocket类、CSocketFile类和CArchive类的3个对象。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.1.1 Visual C++网络编程概述(2.. 下一篇1.1.2 MAC地址的原理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)