Socket原理理解

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 10,485评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,478评论 6 174
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,694评论 2 56
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,555评论 19 139
  • Teredo 原理概述 http://www.ipv6bbs.cn/thread-144-1-1.html (出处...
    我是叶问小盆友阅读 6,650评论 0 1