随手笔记之VC++ (七)
来源:互联网 发布:网络购彩票恢复了吗 编辑:程序博客网 时间:2024/04/29 20:51
TCP/UDP IP 协议
OSI 七层参考模式:
应用层 à 处理网络应用
表示层 à 数据表示
会话层 à 主机间的通信
传输层 à 端到端的链接 TCP/UDP
网络层 à 寻址和最短路劲 IP
数据链路层 à 介质访问
物理层 à 二进制传输
Telnet 远程登入协议。
FTP 文件传输协议
HTTP 超文本传输协议
DNS 域名服务 à解析域名www.baidu.com 为IP地址。
SMTP 简单邮件传输协议
POP3 邮局协议
TCP协议 是面向连接的可靠传输协议,通信时要三步握手来建立双方的连接,
TCP 协议提供了数据的确认和数重传的机制,保证了发送的数据一定能够到达
通信的对方。
UDP协议 是不连接,不可靠的协议,可以直接向一个IP地址发送数据,但不保证对方能接受到数据,实时性较高。
TCP/IP 模型
应用层
传输层
网络层
网络接口层
套接字用于通信区域中,是一个抽象的概念,主要用于将通过套接字通信的进程的共有的特性综合在一起,套接字通常只与一个区域的套接字交换数据,
Window Sockets 只支持一个通信的区域,网际域(AF_INET),
网络字节顺序
由于不同计算机上存放的数据字节的顺序不同,这样发送的数据后,即使接收方接受到数据,也有可能无法查看到接受到的数据,所以在网络中不同的主机间进行通信时要 统一采用 网络字节顺序。
TCP协议下的 C/S 模式
服务端:
1. 创建套接字。 socket
2. 将套接字绑定到一个本机的地址和端口上。 bind
3. 将套接字设为监听模式,准备接受客户请求。Listen
4. 等待客户请求后,接受请求,返回一个新的对应于此次连接的套接字。accept
5. 用返回的新套接字与客户端进行通信 send/recv
6. 返回等待另一个客户请求。
7. 关闭套接字。
客户端:
1. 请求连接服务器所在主机的特定端口。
2. 连接成功后与服务器进行信息的通信。
3. 关闭套接字。
UDP协议下的C/S 模式
服务端:
1. 创建套接字。socket
2. 将套接字绑定到一个本机的地址和端口上。 bind
3. 等待接受数据。recvfrom
4. 关闭套接字。
客户端:
1. 创建套接字。 Socket
2. 向服务器发送数据。sendto
3. 关闭套接字。
Int WSAStartup(WORD 版本号,LPWSADATA 一个结构体指针);
Socket(AF_INET ,类型->SOCK_STREAM / SOCK_DGRAM, 协议->可以0)返回一个套接字 SOCKET 类型,失败的话可以通过WSAGetLastError()
函数返回一个INVALID_SOCKET值。
Int bind( 套接字,套接字本地地址信息,该地址结构的长度);
Unsigned long inet_addr( 一个字符串指针); 是将十进制的IP地址转换为无符号长整形的数值。如果为 INADDR_ANY时候,允许套接字向本级任何的IP地址进行数据的交换,因为一个本机可以有多个网卡就可能有多个IP地址,用这个可以简化。
Char FAR *inet_ntoa( struct in_addr in); 相反返回一个十进制的IP地址字符串
Int listen(套接字,允许监听的个数);
SOCKET accept(套接字,请求的客户端IP地址信息和端口信息,地址信息长度);
Int send(套接字,一个字符串指针保存要传递的数据,这个字符串大小,0);
Int recv(套接字,字符串指针保存接受的数据,字符串大小,0);
Int connect(套接字,请求连接的服务器地址信息,服务器端地址的长度);
U_short htons (u_short hostshort); 主机字节顺序转换为TCP/IP网络字节顺序
16位
U_long htonl( u_long hostlong); 主机字节顺序转换为TCP/IP网络字节顺序
32位
- 随手笔记之VC++ (七)
- 随手笔记之VC++(六)
- 随手笔记之VC++(三)
- 随手笔记之VC++(四)
- 随手笔记之VC++(五)
- 随手笔记之VC++(八)
- 随手笔记之Effective C++
- 数据结构随手笔记之哈希表
- VC++笔记七
- 安卓随手笔记七:(单例模式)
- JAVA随手笔记一之图标按钮
- GMapping源码分析之随手笔记
- 随手笔记
- 随手笔记
- 随手笔记
- 随手笔记
- 随手笔记
- 随手笔记
- mysql存储过程详解
- @SuppressWarnings("unused")
- 利用JQuery直接调用asp.net后台方法
- MB-System帮助手册第一章
- PHP连接MySQL错误:Call to undefined function mysql_connect()
- 随手笔记之VC++ (七)
- 开源分布式版本控制工具 —— Git 之旅
- 回溯法实现全排列
- 一个网站悲催的命运
- 伙伴系统分析
- PHP函数printf()、sprintf()的用法
- 第八章 模块
- 10大Web应用程序安全问题分析
- 随手笔记之VC++(八)