VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 3218|回复: 52

VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装

  [复制链接]
01_avatar_middle
最佳答案
6 
online_admins 发表于 2018-4-2 23:51:09 | 显示全部楼层 |阅读模式
①、Socket头文件的包含及库的链接:
===================================================
②、通用函数的封装:
因为客户端和服务器端都能用到,所以就可以放到一个公共的文件中,
以后还会有一些通用的Socket函数,比如发送数据的函数 SendData,接收数据的函数 RecvData,
这些以后遇到了再给大家封装,以免大家挺的迷糊。
===================================================
③、CServer类的封装:
为了使用方便,把聊天室服务器端的相关Socket网络操作封装成一个CServer类来管理。
提供一些基本的方法,比如:StartServer、StopServer之类的,期间用到的Socket函数一个一个给大家讲解。
===================================================
④、相关函数代码:
===================================================
⑤、        Socket函数讲解:
  1. SOCKET WSAAPI socket(
  2.   _In_  int af, //地址描述
  3.   _In_  int type, //套接字类型
  4.   _In_  int protocol //协议类型
  5. );
复制代码

  1. int bind(
  2.   _In_  SOCKET s, //套接字句柄
  3.   _In_  const struct sockaddr *name, //要关联的本地地址
  4.   _In_  int namelen //地址的长度
  5. );
复制代码

  1. int listen(
  2.   _In_  SOCKET s, //套接字句柄
  3.   _In_  int backlog //监听队列中允许保持的尚未处理的最大连接数量
  4. );
复制代码

  1. SOCKET accept(
  2.   _In_     SOCKET s, //套接字句柄
  3.   _Out_    struct sockaddr *addr, //一个指向 sockaddr_in 结构的指针,用于取得对方的地址信息
  4.   _Inout_  int *addrlen //一个指向地址长度的指针
  5. );
复制代码


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av39750791/?p=2
MP4高清视频下载地址:链接:https://pan.baidu.com/s/19oMD1OaXBO_vT4jU4C2XpQ 提取码:m0tp
本节课件下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^




上一篇:VC++高级班之网络编程篇-[1]网络编程概述
下一篇:VC++高级班之网络编程篇-[3]CServer类的封装
22_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-12 22:17:08 | 显示全部楼层
VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装
30_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-14 08:58:18 | 显示全部楼层
VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装
09_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-19 11:57:59 来自手机 | 显示全部楼层
感谢大神提供学习资源
61_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-22 20:39:31 | 显示全部楼层
视频和课件, 还要分开下载。。。
22_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-25 21:43:53 | 显示全部楼层
VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装
36_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-1 22:28:07 | 显示全部楼层
网络编程篇网络
95_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-17 23:00:48 | 显示全部楼层
感谢老大的无私奉献
98_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-23 17:58:22 | 显示全部楼层
谢谢分享    学习
32_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-25 20:06:36 | 显示全部楼层
Thanks for sharing!!!
20_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-1 12:01:17 | 显示全部楼层
VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装
72_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-2 14:33:32 | 显示全部楼层
③、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服务端
61_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-3 14:59:58 | 显示全部楼层

感谢老大的无私奉献
12_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-4 00:11:08 | 显示全部楼层
谢谢楼主!
80_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-4 01:08:19 | 显示全部楼层
VC++高级班之网络编程篇-[2]通用Socket函数及CServer类的封装 [修改]
50_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-8 20:29:00 | 显示全部楼层
祝愿VC驿站越办越好
85_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-9 12:43:30 | 显示全部楼层
感谢分享,学习一下!
87_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-11 11:30:03 | 显示全部楼层
看看课件先
56_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-27 00:40:35 | 显示全部楼层
感谢老大的无私奉献!!!
67_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-29 19:39:45 | 显示全部楼层
ok!!!!!!!!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

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

GMT+8, 2019-11-14 20:33

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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