fd

2019-2020-1 20175315 20175322 20175334 实验三 实时系统

孤者浪人 提交于 2019-12-05 12:01:02
2019-2020-1 20175315 20175322 20175334 实验三 实时系统 小组成员 20175315 陈煜扬 20175322 周弋鸿 20175320 龚仕杰 实验步骤 一、并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 client.c #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175317 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 int main() { // 声明并初始化一个客户端的socket地址结构 struct sockaddr_in client_addr; bzero(&client_addr,

2019-2020-1 20175304 20175303 20175327 20175335 实验三-并发程序

筅森魡賤 提交于 2019-12-05 11:57:34
2019-2020-1 20175304 20175303 20175327 20175335 实验三-并发程序 实验过程 实验三-并发程序-1 实验要求 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 实验步骤 首先先学习一下命令wc使用 1.在命令行输入 man wc 2.使用方法 3.部分实例 (1)统计行数 $wc –l file (2)统计单词数 $wc –w file (3)统计字符数 $wc –c file (4)统计流中的字符数 $echo –n 1234 | wc –c 基于Linux Socket程序设计实现wc Sever端代码: #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #include<unistd.h> #define SERVER

Android如何区别真机和模拟器

别等时光非礼了梦想. 提交于 2019-12-05 11:49:31
现在的模拟器的功能太强大,从蓝牙,传感器等配件到IMEI,Mac,以及手机硬件信息什么都可以模拟 为了防止用户利用模拟器模仿真机进行刷单,刷流量等恶意操作 需要获取设备返回的一些信息来鉴别设备的真伪。 下面是整理的模拟器和真机的区别 虽然大部分都可以模仿,伪造,但是如果综合所有维度来监控,应该不存在太大问题。 一,native方式。 通过c代码读取设备中的配置和硬件相关信息。 1,diskstats 获取闪存的分区状态信息。 int fd = open(“/proc/diskstats”, O_RDONLY); bytes = read(fd, buf, bytes); 区别:真机下都有mmcblk0分区,但是模拟器没有分区信息。 2,mac地址。 通过socket和ioctl读取mac地址。 sockfd = socket(AF_INET, SOCK_DGRAM, 0); ioctl(sockfd, SIOCGIFCONF, (char*)&ifc); ioctl(sockfd, SIOCGIFADDR, &ifr[i]) ioctl(sockfd, SIOCGIFHWADDR, (char*)&ifr[i]) 区别:真机可以获取wlan0的ip和mac地址,模拟器只能获取eth0的ip和mac地址; 3,有用的prop信息。 __system_property_get(key,

2019-2020-1 20175221 20175225 20175226 实验三 实时系统

老子叫甜甜 提交于 2019-12-05 11:48:37
2019-2020-1 20175221 20175225 20175226 实验三 实时系统 实验要求 任务一 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 任务二 使用多线程实现wc服务器并使用同步互斥机制保证计数正确 上方提交代码 下方提交测试 对比单线程版本的性能,并分析原因 实验步骤 任务一 先使用 man wc 了解wc命令的功能与用法 在了解了各参数的作用后,对 test1.txt 和 test2.txt 分别试验 wc wc -w 功能 用socket编程实现 客户端 服务器端 实验代码 客户端 #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175225 #define BUFFER_SIZE 1024

2019-2020-1 20175335 20175303 20175304 20275327 实验三 并发程序

≡放荡痞女 提交于 2019-12-05 11:47:36
2019-2020-1 20175335 20175303 20175304 20275327 实验三 并发程序 小组成员: 20175335、20175303、20175304、20175327 实验目的: 并发程序 一、实验三-并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 实验过程 wc功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 wc参数: -c 统计字节数。 -l 统计行数。 -m 统计字符数。 -w 统计字数。 -L 打印最长行的长度。 socket编程模型: 实验代码如下: server.c服务器 #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175335 #define LENGTH_OF_LISTEN_QUEUE 20 #define

2019-2020-1 20175310 20175317 20175320 实验三 实时系统

感情迁移 提交于 2019-12-05 11:28:42
2019-2020-1 20175310 20175317 20175320 实验三 实时系统 小组成员 20175310 奚晨妍 20175317 钟睿文 20175320 龚仕杰 实验步骤 一、并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 client.c #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175317 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 int main() { // 声明并初始化一个客户端的socket地址结构 struct sockaddr_in client_addr; bzero(&client_addr,

大白话五种IO模型

試著忘記壹切 提交于 2019-12-05 09:33:41
目录 一、I/O模型介绍 二、阻塞I/O模型 2.1 一个简单的解决方案 2.2 该方案的问题 2.3 改进方案 2.4 改进后方案的问题 三、非阻塞式I/O模型 3.1 非阻塞I/O实例 四、I/O多路复用模型 4.1 select/poll模型 4.2 epoll模型(了解) 五、信号驱动I/O模型(了解) 六、异步I/O模型 七、I/O模型比较分析 一、I/O模型介绍 为了更好地了解I/O模型,我们需要事先回顾下: 同步、异步、阻塞、非阻塞 同步(synchronous) I/O和异步(asynchronous) I/O,阻塞(blocking) I/O和非阻塞(non-blocking)I/O分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous I/O和non-blocking I/O是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network I/O。本文最重要的参考文献是Richard Stevens的“UNIX® Network Programming Volume 1, Third EditI/On: The Sockets Networking ”,6

Qualcomm Camera HAL 2.0

冷暖自知 提交于 2019-12-05 09:18:32
我们知道在HAL的Vendor实现当中会动态去load一个名字为camera.$platform$.so的档案,然后去加载Android HAL当中定义的方法,这里以Camera HAL 2.0并且Qualcomm msm8960为例子看下,结合之前的 一篇文章 (http://guoh.org/lifelog/2013/07/glance-at-camera-hal-2-0/)。 (注:这篇文章已经草稿比较久了,但是一直没有发出来,因为手里的这版代码没有设备可以跑,另外也无法确定代码是否完全正确,至少发现了一些地方都是stub实现,文中可能存在一些错误,如发现不正确的地方欢迎指出,我也会尽量发现错误并修正!) 我们知道在camera2.h当中定义了很多方法,那么在msm8960 HAL就是在如下地方 /path/to/qcam-hal/QCamera/HAL2 这编译出来就是一个camera.$platform$.so,请看它的实现 首先是HAL2/wrapper/QualcommCamera.h|cpp /** * The functions need to be provided by the camera HAL. * * If getNumberOfCameras() returns N, the valid cameraId for getCameraInfo() *

2019-2020-1 20175310 20175317 20175320 实验三 实时系统

心已入冬 提交于 2019-12-05 09:07:48
2019-2020-1 20175310 20175317 20175320 实验三 实时系统 小组成员 20175310 奚晨妍 20175317 钟睿文 20175320 龚仕杰 实验步骤 一、并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 client.c #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175317 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 int main() { // 声明并初始化一个客户端的socket地址结构 struct sockaddr_in client_addr; bzero(&client_addr,

Flask -- 01. werkzeug请求与响应以及源码的解析

久未见 提交于 2019-12-05 08:45:06
werkzeug: Flask框架内部本身没有实现socket,而是使用wsgi实现。wsgi是web服务网管接口,能够对请求进行封装、解析。 基于werkzeug的web应用: # 方式一:Flask返回对象是Response, 继承于werkzeug的BaseResponse。 from werkzeug.serving import run_simple from werkzeug.wrappers import BaseResponse def hello(environ, start_response): # environ, start_response参数在下面有说明 response = BaseResponse('Hello World!') return response(environ, start_response) if __name__ == '__main__': run_simple('127.0.0.1', 5000, hello) # 方式二: from werkzeug.wrappers import Request, Response @Request.application def hello(request): return Response('Hello World!') if __name__ == '__main__': from