VC++使用socket进行TCP、UDP通信实例总结
1. 两台计算机通信需要协议,通信的两台计算机IP必须唯一
2. 同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一标示。
3. 实际上就类似于一个办公室的总机号码(IP)和分机号码(端口号)
4. 协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定
5. 协议=语义+语法+规则
6. 不同层具有各自不同的协议
7. 上层使用下层提供的服务,实际通信在最底层完成
8. 对等层实体之间虚拟通信|
9. TCP:面向连接的可靠的传输协议
10. UDP:面向无连接的不可靠的传输协议
11. 端口是一种抽象的软件结构。应用程序通过系统调用与某端口建立连接后,传输层传给端口的数据都被响应的进行所接收,相应进程发给传输层的数据都通过该端口输出。
12. 端口用一个整数型标示符来表示。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。
13. 端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务。例如:http使用的是80端口。
14. socket(套接字):windows sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。
15. C/S模式:客户机向服务器提出请求,服务器接收到请求后,提供相应的服务。
16. 套接字的类型
a) 流式套接字:(SOCK_STREAM):面向连接可靠的数据传输服务,按顺序接收
b) 数据包式套接字:(SOCK_DGRAM):无连接服务。接收顺序混乱。
c) 原始套接字(SOCK_RAM)
17. 基于TCP(面向连接)的socket编程
a) 服务器端程序:
i. 创建套接字socket
ii. 将套接字绑定到一个本地地址和端口上bind
iii. 将套接字设为监听模式,准备接收客户请求listen
iv. 等待客户请求到了;当请求到来后,接收连接请求,返回一个新的对应于此次连接的套接字accept
v. 用返回的套接字和客户端进行通信send/recv
vi. 返回,等待另一客户请求
vii. 关闭套接字
b) 客户端程序:
i. 创建套接字socket
ii. 向服务端发出连接请求connect
iii. 和服务器端进行通信rend/recv
iv. 关闭套接字
18. 基于UDP的socket编程
a) 服务器端(接收端)程序:
i. 创建套接字socket
ii. 将套接字绑定到一个本地地址和端口上bind
iii. 等待接收数据recv/from
iv. 关闭套接字
b) 客户端(发送端)程序:
i. 创建套接字socket
ii. 向服务器发送数据sendto
iii. 关闭套接字
19.int WSAStartup (
WORD wVersionRequested, //打算使用的最高winsock版本号
LPWSADATA lpWSAData //是个结构体,接收socket的详细信息);
20. alt+F8:格式化代码
21. 面向TCP的连接,服务器端
a) 套接字
SOCKET socket (
int af, //指定地址簇
int type, //socket类型
int protocol //协议
);
b) 绑定
int bind (
SOCKET s, //要绑定的套接字
const struct sockaddr FAR* name, //指定了该套接字的本地地址信息
int namelen //该地址结构的长度
);
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
c) 监听
int listen (
SOCKET s,
int backlog
);
d) 接受连接
SOCKET accept (
SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen
);
e)发送
int send (
SOCKET s, //建立连接的socket
const char FAR * buf, //发送的数据
int len, //发送数据的长度
int flags
);
f)接收
int recv (
SOCKET s,
char FAR* buf,
int len,
int flags
);
g) 需要的文件
#include <winsock2.h>
需要连接一个动态链接库:ws2_32.lib
22. 服务器端:
a) Socket
b) 连接:connect
int connect (
SOCKET s,
const struct sockaddr FAR* name,
int namelen
);
c) 接收:recv
d) 发送:send
e) 关闭:closesocket
参考文献:
1、VC++ socket通信实例 总结
2、VC++ 使用socket基于TCP、UDP通信
VC++使用socket进行TCP、UDP通信实例总结的更多相关文章
- Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信
Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- HP-SOCKET TCP/UDP通信框架库解析
项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
随机推荐
- 【原】Spring和Dubbo基于XML配置整合过程
背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个 ...
- 最全的HTTP 响应状态码列表!
摘要: HTTP状态码,我们要学会现查现用能记住最好. 简单举例几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.如果是做AJAX,RE ...
- MySQL Community Server 5.5.56 ZIP Archive 绿色解压版 window安装步骤
MySQL Community Server 5.5.56 ZIP Archive 绿色解压版 window安装步骤 首先 准备好启动配置文件my.ini [mysqld] #设置字符集为utf8 ...
- MySql的InnoDB存储引擎--索引
索引分类: 1.聚集索引:索引顺序与物理顺序一致. MySql 的 InnoDB 中,主键索引就是聚集索引.好处是,进行搜索的时候,因为索引和物理顺序一致,所以找数据的时候更快. 2.非聚集索引:索引 ...
- python学习之老男孩python全栈第九期_day025知识点总结——接口类、抽象类、多态、封装
一. 接口类 java:面向对象编程 设计模式 -- 接口类 接口类:python原生不支持 抽象类:python 原生支持的 from abc import abstractclassmethod, ...
- BZOJ4659:lcm
传送门 题目所给的不合法的条件可以转化为 \[\exists p,p^2|gcd(a,b) \Leftrightarrow \mu(gcd(a,b))\ne 0\] 那么 \[ans=\sum_{a= ...
- Angular面试题三
十六.一个 angular 应用应当如何良好地分层? 目录结构的划分 1.对于小型项目,可以按照文件类型组织,比如: css Js { controllers models services ...
- 微服务架构之spring cloud hystrix&hystrix dashboard
在前面介绍spring cloud feign中我们已经使用过hystrix,只是没有介绍,spring cloud hystrix在spring cloud中起到保护微服务的作用,不会让发生的异常无 ...
- Flex 加载dwg
之前写的几种格式不是专门gis格式,这次来说说加载dwg.首先dwg格式不同于dxf格式,虽然autocad都能加载进去,真正用的比较多的是dwg格式,反正测绘,国土规划部门都是,吐槽下,然而auto ...
- toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别
这两天修改一个bug,发现一个问题: toLocaleTimeString()方法在IE和谷歌浏览器上 根据本地时间格式,把 Date 对象的时间部分(不含日期)转换为“时间字符串”存在区别.方法原 ...