设为首页 加入收藏

TOP

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

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

在数据传输层中,包括了TCP和UDP协议。其中,TCP协议是基于面向连接的可靠的通信协议,它具有重发机制,即当数据被破坏或者丢失时,发送方将重发该数据。而UDP协议是基于用户数据报协议,属于不可靠连接通信的协议。例如当使用UDP协议发送一条消息时,并不知道该消息是否已经到达接收方,或者在传输过程中数据是否已经丢失。但是在即时通信中,UDP协议在一些对时间要求较高的网络数据传输方面有着重要的作用。

(3) C/S编程(www.cppentry.com)模型

C/S编程(www.cppentry.com)模型是基于可靠连接的通信模型。在通信的双方必须使用各自的IP地址以及端口进行通信。否则,通信过程将无法实现。通常情况下,当用户使用C/S模型进行通信时,其通信的任意一方称为客户端,则另一方称为服务器端。

服务器端等待客户端连接请求的到来,这个过程称为监听过程。通常,服务器监听功能是在特定的IP地址和端口上进行。然后,客户端向服务器发出连接请求,服务器响应该请求则连接成功。否则,客户端的连接请求失败。C/S编程(www.cppentry.com)模型如图1-3所示。

 
图1-3  C/S编程(www.cppentry.com)模型

由于客户端连接服务器时需要使用服务器的IP地址和监听端口号才能完成连接,所以,服务器的IP地址和端口必须是固定的。在这里,向用户介绍部分协议所使用的端口号码。例如,HTTP协议(用于网页浏览服务)所使用的端口号为80,FTP协议(用于文件传输)所使用的端口号是21。

2. 网络编程(www.cppentry.com)基础

可以使用MFC中封装的套接字类来编写网络应用程序,也可以使用Windows API函数进行程序开发。其中MFC网络编程(www.cppentry.com)比较简单,使用起来也非常方便。但是,使用MFC相关类编程(www.cppentry.com)会使用户对网络通信中的基本原理缺乏清晰的认识。而使用Windows API函数则恰好相反,可以使用户熟悉网络通信的基本原理。在实际编程(www.cppentry.com)过程中,通信双方的连接以及数据通信均是基于Socket(套接字)进行的。

(1) Sockets套接字

用户在Windows中编写网络通信程序时,需要使用Windows Sockets(Windows套接字)。与Windows套接字相关的API函数称为Winsock函数。

在网络通信的双方,均有各自的套接字,并且该套接字与特定的IP地址和端口号相关联。通常,套接字主要有两种类型,分别是流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。其中,流式套接字专门用于使用TCP协议通信的应用程序中,而数据报套接字则专门用于使用UDP协议进行通信的应用程序中。

(2) 网络字节顺序

网络字节顺序是指TCP/IP协议中规定的数据传输使用格式,与之相对的字节顺序是主机字节顺序。网络字节顺序表示首先将数据中最重要的字节进行存储。例如,当数据0x358457使用网络字节顺序进行存储时,该值在内存中的存放顺序将是0x35、0x84、0x57。因为通信数据可能会在不同的机器之间进行传输,所以通信数据必须以相同的格式进行整理。只有经过格式处理的通信数据,才能在不同的机器之间进行传输。

3. 网络通信基本流程

要通过互联网进行通信,用户至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。根据网络通信的特点,套接字可以分为两类:流式套接字和数据报套接字。套接字之间的连接过程可以分为三个步骤,分别是服务器监听、客户端请求和连接确认。具体说明如图1-4所示。

 
图1-4  套接字之间的连接过程
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.1.1 Visual C++网络编程概述(1.. 下一篇1.1.1 Visual C++网络编程概述(3..

评论

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

·常用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)