网络笔记01-2 scoket
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的更多相关文章
- 软件测试之loadrunner学习笔记-01事务
loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...
- 【技能大赛笔记01】Zigbee点对点按键控制程序开发
[技能大赛笔记01]Zigbee点对点按键控制程序开发 --2017年"物联网物联网技术应用与维护"任务五题1(中职组) 1.题目要求 2.工程文件 在比赛中,提供了一个基于Bas ...
- Redis:学习笔记-01
Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...
- Java:并发笔记-01
Java:并发笔记-01 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 1. 进程与线程 本章内容 进程和线程的概念 并行和并发的概念 线程基本应用 1.1 ...
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
<30天自制操作系统>笔记(01)——hello bitzhuwei's OS! 最初的OS代码 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以 ...
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- PHP 学习笔记 01
例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...
- Linux网络服务01——Linux网络基础设置
Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...
- JS自学笔记01
JS自学笔记01 1.开发工具 webstorm 2.js(javascript) 是一门脚本.解释性.动态类型.基于对象的语言 含三个部分: ECMAScript标准–java基本语法 DOM(Do ...
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!【转】
转自:http://www.cnblogs.com/bitzhuwei/p/OS-in-30-days-01-hello-bitzhuwei-OS.html 阅读目录(Content) 最初的OS代码 ...
随机推荐
- ORACLE中大数据量查询实现优化
大数据量查询,对数据库开发者来说,性能问题往往是最需要费尽心机的,借此总结自己优化此类问题的心得与大家分享,以免大家走更多的弯路. 1.使用主键临时表 大数据量表关联查询,是性能开销的主要原因.通过主 ...
- Java 专业人士必备的书籍和网站列表
对于 Java™ 语言开发人员来说,信息过量是一个真正的问题.每个新入行的程序员都要面临一个令人畏缩的挑战:要进入的行业是一个具有海量知识的行业.要了解的东西简直 太多了.对于有经验的老手来说,情况只 ...
- Objective-C 【@property 的参数问题】
------------------------------------------- @property参数 总的来说,这是一种编译器的特性(在生成@property的时候为@property添加相 ...
- Application 统计在线人数
MVC 统计在线人数: protected void Application_Start() { Application[; AreaRegistration.RegisterAllAreas(); ...
- javaScript之 变量、作用域和内存问题
<javaScript高级程序设计>第四章 读书笔记 4.1 基本类型 和 引用类型 的值 1. 基本类型值 包括:Undefined.Null.Boolean.Number 和 St ...
- 解析XML文档之二:使用PULL解析
第一步:解析文档为一下文档 <?xml version="1.0" encoding="UTF-8"?> <students> < ...
- POJ 2287 Tian Ji -- The Horse Racing(贪心)
题意:田忌和齐王有n匹马,进行n局比赛,每局比赛输者给胜者200,问田忌最多能得多少钱. 分析:如果田忌最下等的马比齐王最下等的马好,是没必要拿最下等的马和齐王最好的马比的.(最上等马同理) 因此,如 ...
- 真正明白C语言二级指针(转载)
指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的 ...
- Z-Stack学习笔记
Technorati 标签: Z-Stack profile 1. 栈配置profile 栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置.ZigBee联盟定义了这些由栈配置组成的栈参 ...
- 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具
基于OCILIB的oracle数据库操作总结 1. 类图 2. 基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* ----- ...