windows socket 流式套接字笔记

本文详细介绍了Windows Socket流式套接字在服务器和客户端的应用,包括服务器的回射程序设计和客户端的基本执行步骤。同时,讨论了P2P的四种拓扑形式,并提出流式套接字网络功能框架设计,包括初始化、地址转换和网络操作等功能。此外,还探讨了多线程编程在Windows API和MFC中的支持,以及并发服务器的工作流程。最后,讨论了如何提高流式套接字的接收能力和传输效率,包括定长接收服务器的设计和传输效率优化策略。
摘要由CSDN通过智能技术生成
Ch1 网络应用程序设计基础
#本章从高层到底层分别介绍了面向应用的网络编程方法,基于TCP/IP协议栈的网络编程方法,和面向原始帧的网络编程方法。
#计算机网络的定义:是指将地理位置不同的且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
#计算机网路的组成:计算机,网络操作系统,传输媒体,应用软件。
#为了降低设计难度,网络设计者以分层的方式组织协议以及实现这些协议的网络硬件和软件。
#协议分层具有概念化和结构化的优点,每一层都建立在它的下层之上,使用它的下层提供的服务,下层对上层隐藏服务的实现细节。
#特定系统使用的一组协议称为协议栈。
#OSI,开放系统互联参考模型,open system interconnection reference model。
#OSI的低三层,物理层,数据链路层,网络层,负责创建网络通信连接的链路;高四层传输层,会话层,表示层,应用层负责端到端的数据通信。
#应用层之间交换的数据单位为消息流或者报文。
#TCP的PDU为TCP数据段。
#UDP的PDU为UDP数据报。
#网络层是整个TCP/IP协议栈的核心。网络层的功能是通过路径选择把分组发往目标网络或者主机,进行网络拥塞控制和差错控制。IP和ICMP以及选路协议RIP,OSPF等是网络层的协议。网络层的PDU是数据包,或者分组。
#数据链路层提供的服务取决于应用于该链路层的协议,常用的协议有802.3,802.11和点对点PPP等。链路层的PDU为帧。
#链路层的任务是将整个帧从一个网络元素移动到临近的网络元素,物理层的任务是将帧中的一个一个比特从一个节点移动到下一个节点。物理层的PDU为比特。
(P4)
NAT有效解决了IP地址短缺的问题,但是它也带来了一些新的问题,使得开发点对点通信的应用程序会有很多附加的考虑:
*处于NAT后面的主机不能充当服务器直接接收外部主机的连接请求,必须对NAT设备进行相应的配置才能完成外部地址与内部服务器地址的映射。
*处于不同NAT之后的两台主机无法建立直接的UDP和TCP连接,必须使用中介服务器来帮组它们完成初始化的工作。
#套接字类型有三类:流式套接字,数据报套接字和原始套接字。
#在网络上直接发送和接收数据帧是最原始的数据访问方式。直接网卡编程,基于PACKET DRIVER的网络编程方法。基于NDIS的的网络编程。winpcap编程。
#网络编程通信模型是网络因公程序设计的基础,决定了网络功能在每个通信节点的部署。
#网络硬件与协议相结合,形成了一个能使网络上任何一对计算机上的应用程序相互通信的基本通信结构。
#互联网仅仅提供了一个通用的通信架构,网络协议只是规定了应用程序在通信的时候所必须遵循的约定,并不解决用户的各种具体应用问题,而且它只负责传递数据,还有很多关于通信功能和通信实体的阻止协调策略尚没有考虑。

#P2P的四种拓扑形式:中心化拓扑,全分布式非结构化拓扑,全分布式结构化拓扑,半分布式拓扑。




2015年1月1日18:04:47 基于流式套接字的服务器回射程序设计
---------------------------------------------------------------------------------------------
服务器的基本执行步骤:
| 引用头文件 |-->| 创建流式套接字 |-->| 捆绑服务器的指定端口到套接字 |-->| 把套接字变换成监听套接字 |-->| 接收客户连接 |-->| 接收客户发来的数据 |-->| 发送客户发来的数据 |-->| 回到步骤“接收客户发来的数据” |-->| 如果客户端关闭连接,则终止当前连接 |-->| 回到步骤“接收客户连接”|-->| 如果终止条件到,则关闭套接字,释放资源,终止程序”|
---------------------------------------------------------------------------------------------
客户端的基本执行步骤:
| 引用头文件 |-->| 处理命令行参数 |-->| 创建流式套接字 |-->| 指定服务器IP地址和端口 |-->| 与服务器建立连接 |-->| 获得用户的输入 |-->| 发送回射请求 |-->| 接收并且输出服务器的应答 |-->| 回到步骤“接收并且输出服务器的应答” |-->| 如果终止条件到,则关闭套接字,释放资源,终止程序”|

----------------------------------------------------------------------------------------------




实验:流式套接字网络功能框架设计


几乎每一个TCP服务器或者TCP客户端为了完成网络传输都需要撰写重复的初始化和释放代码以及一些近似的网络操作,提高代码的重用性。
流式套接字网络功能框架应该具有的基本功能:
--windows socket dll 初始化功能
--windows socket dll 释放功能
--地址转换功能,即根据用户输入的地址信息(IP或者是域名),对地址进行统一的处理,以结构 struct sockaddr_in的方式输出。
+++++++++++++++

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值