TCP/IP协议、socket及socket简单实现网络通讯
来源:互联网 发布:闪电网络测速工具 编辑:程序博客网 时间:2024/05/21 22:34
TCP/IP协议
TCP/IP协议是什么?
TCP/IP协议是个名词,并不是TCP和IP放在一起说了,中文名叫做传输控制协议/互联网络协议,是一种网络通信协议,它规范了网络上的所有通信设备,数据往来格式以及传送方式(传输)。 TCP/IP协议是网络的基础,是Internet的语言。
TCP/IP和HTTP协议的关系
关于TCP/IP和HTTP协议的关系,网上有一段比较容易理解的介绍: "我们在传输数据时,可以只使用(传输层网络层)TCP/IP协议,但是那样的话,没有应用层,便无法识别数据内容。 如果想要使传输的数据有意义,则必须使用到应用层HTTP协议。应用层提供了封装或者显示数据的具体形式"
socket(套接字层、插座)
实际上socket就是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API,内部按照TCP/IP协议对数据封包解包,并记录生成的端口号与IP地址)。 Socket的出现只是使我们程序员能够更方便的使用TCP/IP协议栈而已,是对TCP/IP的抽象。 通过Socket,我们能更好地使用TCP/IP协议。
网络通讯的实质
通信的两端,也就是客户端和服务器都有 Socket(IP地址和端口号两部分),所以可以说网络通信其实就是在 Socket 间的通信。 数据在两个 Socket 间通过 IO 传输 (input/output,一个请求可以看做一次IO传输)
利用socket替代HTTP做个简单的网络通讯
Socket 是纯C语言的,是跨平台的
socket通讯的原理
C版本的socket通讯
网络通讯链中,将应用层省去,用Socket做网络请求,HTTP的内容:设置服务器的信息等
1.创建socket 使用socket函数 返回值是int ,>0就表示成功 2.创建服务器,并将我们创建的socket连接到服务器 使用connect函数, 返回值是int:0代表连接成功,其他失败) 3.向服务器发送消息 使用send函数,返回值:如果成功返回发送的字节数,如果失败返回SOCKET_ERROR 4.接收服务器返回的数据 使用recv函数,返回值:如果成功返回数据的字节数,如果失败返回SOCKET_ERROR 5.关闭连接 clock(创建的socket)
源码见链接:http://git.oschina.net/.coding/socketmonihttp
iOS移动端有一个封装的很好的socket套接字库:GCDAsyncSocket
以上,概念性的部分与图片,皆来自网络,本人仅做简单梳理。
阅读全文
0 0
- TCP/IP协议、socket及socket简单实现网络通讯
- 基于tcp/ip协议的Socket网络通讯 --> 简单的数据传送和库构造
- 如何基于TCP/IP协议进行MFC Socket网络通讯编程
- 如何基于TCP/IP协议进行MFC Socket网络通讯编程
- TCP/IP协议简介及JAVA中的Socket实现
- 浅析JAVA SOCKET及TCP/IP协议
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- 简单理解Socket及TCP/IP、Http、Socket的区别
- OkHttp源码分析
- iOS/Swift3.0 终端命令自动打包
- Maven实践---导航
- Android InputMonitor
- StructuredStreaming官方文档翻译
- TCP/IP协议、socket及socket简单实现网络通讯
- php mysql数据库操作类
- socket之UDP通信
- HBase的RowKey设计原则
- Rails之关于时间(时区)
- Node.js学习之Telnet
- ZooKeeper伸缩性
- MyBatis在insert插入操作时返回主键ID的配置
- 线程和进程的区别