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. hdu 4714 树形DP

    思路:dp[i][0]表示第i个节点为根的子树变成以i为一头的长链最小的花费,dp[i][0]表示表示第i个节点为根的子树变成i不是头的长链最小花费. 那么动态方程也就不难想了,就是要分几个情况处理, ...

  2. 转: React系统的入门系统

    评注:React系统的入门系统. 转:  http://www.infoq.com/cn/search.action?queryString=%E6%B7%B1%E5%85%A5%E6%B5%85%E ...

  3. css隐藏元素display:none,opacity:0;filter:alpha(opacity=0-100;,visibility:hidden的区别

    在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.我们一般有三种方式:display:none, opacity:0;fil ...

  4. Log4.net使用配置

    开发中经常使用到日志记录功能,Log4.net可以将日志记录到文件中,也可以记录到数据库中,使用非常方便,之前也一直在用,最近也参照了一下网上的资料,想简单总结一下 本文重在通过通用日志类来使用Log ...

  5. JavaScript之返回顶部

    为了弄这个Hexo,今天又是坐在电脑面前待了一天( ⊙ o ⊙ ),老是出问题,在百度上也试验了很多方法,还是没弄好,诶...身心疲惫甚是乏累啊~~~ 算了,这个Hexo先不弄,还是安分点吧,在Hex ...

  6. 【转载】PHP程序员的技术成长规划

    按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...

  7. 20141212--C#对象比较

    static void Main(string[] args) { Class2 oo = new Class2(); oo.shu = ; oo.zi = "你"; Class2 ...

  8. UI1_UITabBarController

    // // AppDelegate.h // UI1_UITabBarController // // Created by zhangxueming on 15/7/8. // Copyright ...

  9. mysql之触发器before和after的区别(2)

    我们先做个测试: 接上篇日志建的商品表g和订单表o和触发器 假设:假设商品表有商品1,数量是10: 我们往订单表插入一条记录: insert into o(gid,much) values(1,20) ...

  10. 杭电ACM2057--A + B Again

    这是题目 A + B Again 这是源代码: #include <stdio.h> int main() { __int64 a,b; while (scanf("%I64X ...