VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 339|回复: 1

VC++高级班之网络编程篇-[1]网络编程概述

[复制链接]
01_avatar_middle
online_admins admin 发表于 2018-4-2 23:48:27 | 显示全部楼层 |阅读模式
①、网络编程介绍:
当今社会,现实生活中,越来越多的应用程序都涉及到网络,比如大家最常用的浏览器(IE、Chrome、FireFox)、聊天软件(QQ、微信)、网络电视(PPStream)、迅雷下载软件 ,以及一些黑客工具:远程控制软件、DDOS软件、木马后门软件等等。就连现在的智能电视也可以上网,以后你家的冰箱能上网,洗衣机也能上网,可以远程遥控家用电器等等。所以大家掌握网络编程就势在必行,不然就会被社会淘汰。
===================================================
②、课程介绍:
本系列课程就是教大家学习基于Windows平台的网络编程技术,当然也可移植到Linux等其他平台,使用的工具是vs2010。
请大家学习之前先做好环境准备,vs2010下载地址:https://www.cctry.com/thread-1-1-1.html

大家记得一定要打上Sp1补丁
===================================================
③、Socket Api 版本:
在Windows平台上主要有两个版本的Socket Api函数:
WinSock 1.1 和 WinSock 2.2,2.2版本默认兼容1.1版本,

1.1 winsock.h wsock32.lib winsock.dll
2.2 winsock2.h ws2_32.lib ws2_32.dll

2.0版本的Socket比1.1的多了一些高级的功能,如:
多重协议支持:通过SPI接口支持其他协议;
多重命名空间:根据服务与主机名选择协议;
重叠I/O模式:增强I/O吞吐量与提高性能;
分散与聚合:从多个缓冲区发送与接收数据;
有条件接受:有选择性地决定是否接受连接;
套接字共享:多个进程共享一个套接字句柄。

如果大家1.1版本学好了再去学习2.0以后的扩展功能绝对不在话下。一般大家看到的WSA开头的都是WinSock2.2新增的函数。
===================================================
④、Socket套接字类型:
比较常用的包括:流式套接字(使用TCP),数据报套接字(使用UDP),原始套接字等等。
TCP与UDP各有优缺点:
TCP:面向连接、稳定、需要资源多;
UDP:面向无连接(一般情况下)、不稳定、需要资源少。

用手机打电话时面向连接的,用手机发短信是面向无连接的,目前来说网络上比较常用的是TCP类型的套接字。
本教程中也使用TCP Socket类型。

TCP与UDP的区别
1.        基于连接与无连接
2.        对系统资源的要求(TCP较多,UDP少)
3.        UDP程序结构较简单
4.        流模式(TCP)与数据报模式(UDP)
TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
具体编程时的区别
1.        socket()的参数不同
2.        UDP Server不需要调用listen和accept
3.        UDP收发数据用sendto/recvfrom函数
4.        TCP:地址信息在connect/accept时确定
UDP:在sendto/recvfrom函数中每次均 需指定地址信息
5.        UDP:shutdown函数无效
部分满足以下几点要求时,应该采用UDP 面向数据报方式
1.        网络数据大多为短消息
2.        拥有大量Client
3.        对数据安全性无特殊要求
4.        网络负担非常重,但对响应速度要求高

TCP Socket通信流程:
详细见TCP_Socket.png,TCP是面向连接的,关于UDP Socket通信流程简单给大家说下,UDP是面向无连接的。
===================================================
⑤、TCP 类型 Socket 程序开发流程:
TCP服务端:WSASartup、socket、bind、listen、accept、read、write、closesocket、WSACleanup。
TCP客户端:WSASartup、socket、connect、read、write、closesocket、WSACleanup。
===================================================
===================================================
※※※ 小作业:详细理解Socket套接字。
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
VC驿站Vip会员售后答疑截图【持续更新】:https://www.cctry.com/thread-288054-1-1.html
教程介绍及详情请见:https://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:https://www.cctry.com/static/vip/index.html




上一篇:VC++高级班之多线程篇-[5]线程间通信
下一篇:VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-11 02:53

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表