scoket:

1.socket

  /**

第一个参数(domain): 表示用什么协议 AF_INET 为IPV4开发

第二个参数(type): 表示scoket为什么类型SOCK_STREAM为TCP  SOCK_DGRAM(UDP,报文);

第三个参数(protocol): 如果输出0 就表示跟scoket的类型来设置相对应的协议

如果返回值>0 就表示成功

*/

self.clientSocket=socket(AF_INET, SOCK_STREAM, 0);

2.connect

/**

参数

1> 客户端socket

2> 指向数据结构sockaddr的指针,其中包括目的端口和IP地址

服务器的"结构体"地址

提示:C 语言中没有对象

3> 结构体数据长度

返回值

0 成功/其他 错误代号,非0即真

*/

struct sockaddr_in serverAddress;

// 1> 协议族

serverAddress.sin_family = AF_INET;

// 2> ip 找机器 inet_addr 会对地址做字节翻转

serverAddress.sin_addr.s_addr = inet_addr(host.UTF8String); //host为发送的字符串

// 3> 端口找程序,将整数的高低位互换(字节翻转)

serverAddress.sin_port = htons(port);//port为端口;

connect(self.clientSocket, (const struct sockaddr *)&serverAddress, sizeof(serverAddress));

发送

/**

参数

1> 客户端socket

2> 发送内容地址 void * == id

3> 发送内容长度 => 字节长度

4> 发送方式标志,一般为0

返回值

如果成功,则返回发送的字节数,失败则返回SOCKET_ERROR

*/

ssize_t sendLen = send(self.clientSocket, msg.UTF8String, strlen(msg.UTF8String), 0);

NSLog(@"发送了 %ld %tu %ld", sendLen, msg.length, strlen(msg.UTF8String));

接收数据

/**

参数

1> socket

2> 接收内容的地址

3> 长度

4> 接收标志,如果是0,标示阻塞式,一直等待服务器的返回数据

C语言中,数组的名字,就是指向数组第一个元素的指针

返回值

接收数据的长度

*/

uint8_t buffer[1024];

ssize_t recvLen = recv(self.clientSocket, buffer, sizeof(buffer), 0);

NSLog(@"接收 %ld 字节", recvLen);

// 获取服务器返回的二进制数据

NSData *data = [NSData dataWithBytes:buffer length:recvLen];

// 转换成字符串

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

断开连接

  // 断开连接

  close(self.clientSocket);

  }

注:基本上就这5部分就可以达到数据的传送和读取,测试的时候需要在终端中输入指令。 sorry指令忘记了...明天晚上补上...

终端:  nc -lk 端口号 在本地开一个端口,进行监听,可以作为简单的本地服务器进行简单的接受信息

网络笔记01-2 scoket的更多相关文章

  1. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  2. 【技能大赛笔记01】Zigbee点对点按键控制程序开发

    [技能大赛笔记01]Zigbee点对点按键控制程序开发 --2017年"物联网物联网技术应用与维护"任务五题1(中职组) 1.题目要求 2.工程文件 在比赛中,提供了一个基于Bas ...

  3. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  4. Java:并发笔记-01

    Java:并发笔记-01 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 1. 进程与线程 本章内容 进程和线程的概念 并行和并发的概念 线程基本应用 1.1 ...

  5. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)——hello bitzhuwei's OS! 最初的OS代码 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以 ...

  6. 《The Linux Command Line》 读书笔记01 基本命令介绍

    <The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...

  7. PHP 学习笔记 01

    例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...

  8. Linux网络服务01——Linux网络基础设置

    Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...

  9. JS自学笔记01

    JS自学笔记01 1.开发工具 webstorm 2.js(javascript) 是一门脚本.解释性.动态类型.基于对象的语言 含三个部分: ECMAScript标准–java基本语法 DOM(Do ...

  10. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!【转】

    转自:http://www.cnblogs.com/bitzhuwei/p/OS-in-30-days-01-hello-bitzhuwei-OS.html 阅读目录(Content) 最初的OS代码 ...

随机推荐

  1. 转:云风skynet服务端框架研究

    转:  http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.sky ...

  2. DOM 1

    首先getAttribute  setAttribute只能被元素节点对象调用.(属性节点和文本节点调用不了) 我们可以通过一下三种方式得到元素: document.getElementById(); ...

  3. phpQuery用法

    了解phpQuery使用前了温习jquery.js的选择用法 jquery选择器,还有一个衍生产品QueryList 例: include 'phpQuery.php'; phpQuery::newD ...

  4. Ubuntu系统下载工具的推荐

    源 起 大家在上手一段时间Ubuntu系统后,可能突然想起最近新出了一些电影想要下载来看看,但如果用Wine运行迅雷,不是没反应就是启动后也不能下载,针对这个问题,根据我的使用体验推荐大家两款Ubun ...

  5. git基础入门之常用命令操作

    本内容参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 初学,有什么不对的地方 ...

  6. Android之开源项目优秀项目篇

    本文转自:http://www.trinea.cn/android/android-open-source-projects-excellent-project/ 记录的项目主要依据是项目有意思或项目 ...

  7. 在sql-server上建立mysql链接库

    EXEC sp_addlinkedserver @server = N'RESUME_MYSQL_CONN', @srvproduct=N'MySQL ODBC 5.1 Driver', @provi ...

  8. WScript.SendKeys()的sendkeys发送组合键以及特殊字符

    SendKeys.Send("^+{TAB}"); 使用SendKeys将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用Send ...

  9. C# 类构造函数赋值里属性与字段赋值注意项

    public class Test { public Test(int age) { this.Age=age;//如果这里使用的是this.age=age;那么属性里的判断将不会执行 } priva ...

  10. 集合类学习之Hashmap机制研究

    1.遍历的两种实现方法 //新建 Map map=new HashMap(); //存储值 map.put() ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //遍历方式 ...