美文网首页
Socket原理理解

Socket原理理解

作者: BigBossZhu | 来源:发表于2016-11-10 01:16 被阅读37次

Socket原理和应用(套接字),网络底层其实就是socket.即时通信用的很多.

纯C语言的.理解知道网络请求是怎么发送数据的.
网络三要素:ip地址,端口,协议(怎么传UDP/TCP).
ip地址找主机,端口找服务器,协议传输数据.
本地回环地址:127.0.0.1 主机名:localhost.
ip地址:过交换机回来.ping不通说明网线有问题.

端口号:保留0-1024,只能使用后面1024-某个值

UDP:用户数据包协议
TCP:传输控制协议

原理:用于在两个客户端与服务器中间进行通信,是TCP\IP的上一层协议.有两个基本概念,客户方(发起请求的一方)和服务方(接收请求的一方)是相对的.两个应用程序首先需要建立socket连接,需要知道服务方的IP地址或机器名称,需要一个约定端口(Port)来确定方式呼叫服务方.但是服务方必须处于监听状态,接受到连接请求,然后建立连接(可以建立也可以拒绝).
发送的消息类型:文本或二进制.

通过ip找主机,通过端口号找程序.

客户方消息到达服务方端口时,会自定触发事件,服务方只要接管事件就可以了,就可以接受到客户方的消息了.

  1. 导入头文件
  2. 创建客户方socket
  3. 连接服务器
  4. 发送数据
  5. 接收数据
//1. 导入
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
//2. 创建(可能成功失败)
self.clientSocket = socket(AF_INET, SOCK_STREAM, 0);
//3. 连接(可能成功失败)
connect(self.clientSocket, (const struct sockaddr *)&severAddress, sizeof(severAddress))
//4. 发送
send(self.clientSocket,msg.UTF8String, strlen(msg.UTF8String), 0)
//5. 接收
recv(self.clientSocket, buffer, sizeof(buffer), 0)

//6. 关闭
close(self.clientSocket); 

OVER既可以接收又可以发送了

都是C语言程序.代码不用记住,理解就好了.

建立请求的过程,发送数据的原理

请求行:指定请求方法,请求资源路径以及HTTP协议版本.
GET / HTTP/1
请求头:对客户端的环境描述,至少要包含主机地址.
还可以包含以下信息

  1. 客户端类型:
    User-Agent:iPhone AppleWebKit
  2. 客户端能接收到的数据类型
    Accept: text/html
    等等
    请求体:客户端发给服务器的数据,例如要上传的数据.

请求项之间\r\n,最后一个请求项\r\n\r\n两个.

// 发送内容给服务器
//    NSString *msg = @"如何成为牛逼的程序员";
    // 协议头://主机地址/路径
    // http://localhost/aaa.txt
    / *GET:请求方式 /:路径 HTTP:协议头 */
    主机地址:Host:m.qidian.com
    NSString *request = @"GET / HTTP/1.1\r\n"
    "Host:m.qidian.com\r\n"
    "Connection:Close\r\n"
    "User-Agent:iPhone AppleWebKit\r\n\r\n";
    NSString *resultStr = [self sendAndRecv:request];

理解获取数据的意思


Snip20161110_3.png

发送请求,服务器返回实体内容给我们.这就是我们需要的数据.

相关文章

  • Socket原理理解

    Socket原理和应用(套接字),网络底层其实就是socket.即时通信用的很多. 纯C语言的.理解知道网络请求是...

  • iOS 原生Socket和CocoaAsyncSocket框架的

    一、Socket到底是什么? 1、Socket原理 1.1、套接字(Socket)概念 套接字(Socket)是通...

  • socket与WebSocket协议

    本文整理了对Socket与WebSocket协议的理解,基于WebSocket聊天室的实现及实现原理,Worker...

  • socket 编程相关资料

    socket bind 的理解socket select

  • TCP HTTP Soket

    1、TCP连接 2、HTTP连接 3、SOCKET原理 3.1套接字(socket)概念 3.2 建立socket...

  • iOS 网络(三)-Socket

    一、Socket原理 1.套接字(Socket)概念 套接字(Socket)是通信的基石,是支持TCP/IP协议的...

  • socket原理

    何谓socket 计算机,顾名思义即是用来做计算。因而也需要输入和输出,输入需要计算的条件,输出计算结果。这些输入...

  • socket原理

    一组数据要发送IP,不可靠, 丢包、重复、失序这个的经常的事情 socket 客户端IP,客户端port,服务器端...

  • socket原理

    socket理解 -套接字socket是通信的基石,是介于传输层(tcp/udp)和应用层(http等)之间,支持...

  • socket原理

    先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用a...

网友评论

      本文标题:Socket原理理解

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