网络通信-----Socket

作者: 钎探穗 | 来源:发表于2016-08-01 22:12 被阅读701次
  • Socket:又称套接字,底层要建立连接通道,通过套接字建立连接,向网络发出应答或请求

  • 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,建立socket连接至少需要一对套接字,一个运行于客户端( ClientSocket),另一个运行于服务器端(ServerSocket).

  • web应用程序,提供HTTP服务,端口80,HTTP底层就是通过socket建立连接通信管道,实现数据传输,HTTP是一个TCP的传输协议(方式),一个安全可靠的协议
  • 数据库应用程序(MySQL是移动服务端的数据库应用程序,端口3306)
网络通信要素:
  • ** IP地址:**寻找主机
  • 端口号:没有就找不到程序,默认为80,标示进程的逻辑地址(一个应用程序就是一个进程),有效端口(065535,实际不止这些,01024由系统使用保留,开发中建议使用1024以上的端口)
传输协议(用什么方式进行交互):
  • TCP:传输控制协议
  • 建立连接(即建立的管道),
  • 建立之后数据传输大小不收限制
  • 通过3次握手完成连接,目的是为数据的安全可靠
  • 每次都要进行连接,效率稍低(在通信双方中任何一方主动关闭,连接之前,TCP连接都将被一直保持下去)
  • UDP:用户数据报协议
  • 不需建立连接(eg:广播),将数据及源和目的封装成数据包
  • 不可靠,出现问题,不会有之前的数据
  • 数据大小有限制(64kb之内),避免中间出现误差,大量数据丢失
  • 速度快
socket通信流程:(需要客户端,服务器端)

服务端将socket,--->bind(端口,来标示当前应用程序),--->监听端口(客户端请求连接[同时连接大量客户端连接,会造成连接阻塞])--->accept(客户端请求[建立连接])--->客户端发请求(write)--->服务器端read--->处理请求后回应数据(write操作)--->客户端read数据--->客户端结束连接---服务器接收断开

socket通信流程.png

实现socket服务端监听

  1. C语言实现
  1. CocoeAsyncSocket(第三方框架)

相关文章

  • day19

    socket套接字 socket又叫套接字,实现网络通信的python通过提供socket标准库来支持socket...

  • Socket编程-tcp协议/服务器端

    Socket编程是用来做网络通信的。 理解:做网络通信的时候需要有网络协议。Socket编程有两种协议 :TCP/...

  • Day18-总结

    import socket 1.什么是socket '''socket又叫套接字,指的是实现网络通信的两端''' ...

  • Socket编程

    一、Socket 1.1 Socket简介 Socket就是为网络服务提供的一种机制。网络通信其实就是Socket...

  • iOS面试题整理

    1.socket原理:socket中文翻译为套接字 是支持TCP/IP协议的网络通信的基本操作单元,包含网络通信必...

  • 1.普通Socket的用法

    Java中网络通信是通过Socket实现的。Socket分为ServerSocket和Socket两大类。Serv...

  • 网络基本

    网络通信的要素 socket通过socket来建立连接,然后通信 IP -- Internet Protocol网...

  • CocoaAsyncSocket --Socket学习

    Socket理论 套接字(Socket)概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信...

  • Day18总结

    一.网络通信过程TCP协议和UDP协议二.socket编程 1.socket编程定义:socket又叫套接字。指的...

  • iOS_环信

    对于环信(即时聊天)分为三个方面学习: 1,Socket的网络通信,Socket相关难点理解(详见——Socket...

网友评论

    本文标题:网络通信-----Socket

    本文链接:https://www.haomeiwen.com/subject/fuhfsttx.html