errno

信息安全系统设计基础实验五:通讯协议设计

旧时模样 提交于 2020-02-02 01:08:52
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:52.53 姓名:王思亓 赵阳林 学号:20135205 20135334 成绩: 指导教师:娄嘉鹏 实验日期:2015.11.24 实验密级: 预习程度: 实验时间:15:30—18:00 仪器组次: 必修/选修:必修 实验序号: 实验名称:通讯协议设计 实验目的与要求: 1、掌握在ARM开发板实现一个简单的WEB服务器的过程。 2、学习在ARM开发板上的SOCKET网络编程。 3、学习Linux下的signal()函数的使用。 实验仪器: ARM机 1台 PC机 1台 REDHAT 1台 一、实验内容 1.阅读理解源码 进入07_httpd所在的目录,使用vi编辑器理解源代码。 2.编译应用程序 使用gcc编译器,分别对文件夹下的copy.c和httpd.c进行编译,出现copy和httpd的可执行文件。 3.下载调试 使用NFS服务方式将HPPTD下载到开发板上,并拷贝测试用的网页进行调试 4.本机测试 在台式机的浏览器中输入http://192.168.0.121,观察在客户机的浏览器中的链接请求结果和在开发板服务器上的打印信息。 二、实验代码理解 httpd.c代码分析 / * httpd.c: A very simple http server * Copyfight (C) 2003

linux之间进程通信

扶醉桌前 提交于 2020-02-02 00:17:47
进程间通信方式: 同主机进程间数据交换机制: pipe(无名管道) / fifo(有名管道)/ message queue(消息队列)和共享内存。 必备基础: fork() 创建一个与之前完全一样的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都 复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。    vfork : 与fork用法相同,但是他和父进程共享同样的数据存储,因此无需完全复制父进程的地址空间。 // fork() study example 1#include <unistd.h> #include <stdio.h> int main () { pid_t fpid; //fpid表示fork函数返回的值 int count=0; // fork 会将这个变量存在两个不同的内存中,所以两次count的值都是 1 ,而不是 1,2 。 fpid=fork(); if (fpid < 0) printf("error in fork!"); else if (fpid == 0) { printf("i am the child process, my process id is %d、n",getpid(

Flask CLI抛出'OSError:[Errno 8] Exec格式错误'

让人想犯罪 __ 提交于 2020-01-28 05:47:56
这个是报错 运行的时候出现的 /home/python/.virtualenvs/flask_dome/bin/python3.6 /home/python/Desktop/flask_demo_01/app.py * Serving Flask app "app" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: on * Running on http://192.168.0.140:8888/ (Press CTRL+C to quit) * Restarting with stat Traceback (most recent call last): File "/home/python/Desktop/flask_demo_01/app.py", line 79, in <module> app.run(host='192.168.0.140',port=8888) File "/home/python/.virtualenvs/flask_dome/lib/python3.6/site

TCP连接的建立--connect函数

走远了吗. 提交于 2020-01-24 21:38:46
众所周知,TCP是面向连接的协议,我在前面的文章中也有写到过三次握手的过程 有兴趣的可以看一看 tcp三次握手和四次挥手 今天就来看一看socket编程中关于三次握手建立连接的函数–connect 我们在这里还是把建立连接的一方抽象为客户端,接收连接的抽象成服务端 函数原型 # include <sys/socket.h> int connect ( int sockfd , const struct sockaddr * servaddr , socklen_t addrlen ) ; sockfd:socket函数返回的套接字描述符,用来通信。 servaddr:指向服务端套接字地址结构的指针,为了实现通用性,将其转换成sockaddr*的类型 addrlen:表示套接字地址结构的大小 成功返回0,失败返回-1,并设置errno 分析函数失败的几种原因 在分析演示之前先使用ifconfig查看我当前电脑的ip地址 然后我正常连接是可以正常进行通信的(服务器是简单的回射服务器,127.0表示连接本机) 当客户发出报文但是没有收到回应的时候,比如三次握手中发送SYN分节,但是由于一些原因服务端没有收到,这个时候在等待6s后客户端重发,一直到75s后仍然没有相应,则会返回错误,并设置errno为 ETIMEDOUT 。 我们用客户端连接一个不存在局域网中的网络作为测试:

Why os.rename() is raising an exception in Python 2.7?

六眼飞鱼酱① 提交于 2020-01-24 09:36:46
问题 print(path) print(dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) Lines 1 & 2 are debug and statements and these print: D:\Doc\Papa\Photos\2012\2012_07_divers\CSC_3709.jpg D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg Line 3 raises: File "D:\Doc\Papa\scripts\python\photosort\photosort.py", line 83, in rename os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date

Why os.rename() is raising an exception in Python 2.7?

让人想犯罪 __ 提交于 2020-01-24 09:36:08
问题 print(path) print(dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) Lines 1 & 2 are debug and statements and these print: D:\Doc\Papa\Photos\2012\2012_07_divers\CSC_3709.jpg D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg Line 3 raises: File "D:\Doc\Papa\scripts\python\photosort\photosort.py", line 83, in rename os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date

python3 报错 [Errno 5] Input/output error 没有stdout时使用了print

[亡魂溺海] 提交于 2020-01-22 10:59:44
过程描述 刚不久用 Tornado 写了一个项目,本打算部署在 Nginx 上,但是因为公司的一些原因就没有使用 Nginx,直接在命令行中启动 当我从命令行以后台的方式启动以后,是可以正常访问的 python start.py & 但是,当我关闭远程 ssh 连接后,程序就出问题了,程序没有任何反应,但是进程却好好的待在进程池中等待 CPU 的召唤。通过 try 捕获到了异常 [Errno 5] Input/output error 后经过排查找到了问题,这是因为我在程序中有 print 语句,当我把远程 ssh 退出后,就相当于把它的 shell 关闭了,没有了 shell 的进程 print 就没有地方输出字符,不能“写”到屏幕上了,所以就会报一个 I/O 错误 解决方案 不使用命令行的方式启动,将程序放入 crontab 中定时启动 注释或删除程序中有 print 语句的地方 使用 nohup 运行命令,可以使命令永久的执行下去,和用户终端没有关系,断开SSH连接都不会影响程序的运行 来源: CSDN 作者: whatday 链接: https://blog.csdn.net/whatday/article/details/104067430

yum 安装时错误 Errno 14 Couldn't resolve host 解决办法

时光总嘲笑我的痴心妄想 提交于 2020-01-20 19:05:32
Downloading Packages: http://mirrors.163.com/centos/6.5/os/i386/Packages/mlocate-0.22.2-4.el6.i686.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.163.com'"Trying other mirror. http://mirrors.aliyun.com/centos/6.5/os/i386/Packages/mlocate-0.22.2-4.el6.i686.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.aliyun.com'"Trying other mirror. http://centos.ustc.edu.cn/centos/6.5/os/i386/Packages/mlocate-0.22.2-4.el6.i686.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'centos.ustc.edu.cn'"Trying other mirror. 后来网上查了一下说是DNS服务器错误。于是修改一下 /etc/resolv.conf

Android系统消息处理机制

会有一股神秘感。 提交于 2020-01-19 12:09:55
Android系统消息处理机制 前言 在Android应用开发中,主线程一般都是UI操作,子线程去完成一些耗时操作。主线程会一直等待系统或者用户的响应,从而完成对UI的渲染和显示。在学些之前,先了解两个linux的知识点: 管道(pipe):管道是一种IPC机制,作用于有血缘关系的进程之间,完成数据传递,调用pipe系统函数可创建一个管道。其本质是一个虚拟文件(实际为内核缓冲区),采用半双工通信方式,数据只能在一个方向流动。 int pipe ( int pipefd [ 2 ] ) ; //成功:0;失败:-1,设置errno 函数调用成功后返回r/w两个文件描述符,无需open,但要显示的close,fd[0] --> r,fd[1] --> w,向管道文件读写数据实际上是在读写内核缓冲区。下面是完成进程间通信的调用逻辑: 父进程调用pipe函数创建管道,得到两个文件描述符fd[0]、fd[1]指向管道的读写端。 父进程调用fork创建子进程,那么子进程也有两个文件描述符指向同一管道。 3)父进程关闭管道读端,子进程关闭管道写端。父进程可以向管道中写入数据,子进程向管道中的数据读出,由于管道是利用环形缓冲区实现得,数据从写端流入管道,从读端流出,这样就实现了进程间通信。 epoll 机制:epoll是linux内核的一种可拓展的IO事件处理机制

Visual C++中的异常处理浅析

心已入冬 提交于 2020-01-16 00:23:37
Visual C++中的异常处理浅析 作者: 宋宝华 出处: 天极网 责任编辑: 方舟   Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。   一个典型的异常处理包含如下几个步骤:   (1)程序执行时发生错误;   (2)以一个异常对象(最简单的是一个整数)记录错误的原因及相关信息;   (3)程序检测到这个错误(读取异常对象);   (4)程序决定如何处理错误;   (5)进行错误处理,并在此后恢复/终止程序的执行。   C、C++、MFC及SEH在这几个步骤中表现出了不同的特点。本文将对这四种异常处理进行介绍,并对它们进行对比分析。本文例程的调试平台为Visual C++6.0,操作系统为Windows XP,所有程序均调试通过。   在进入正式的讲解之前,先说几句废话。许多的编程新手对异常处理视而不见,程序里很少考虑异常情况。一部分人甚至根本就不考虑,以为程序总是能以正确的途径运行。譬如我们有的程序设计者调用fopen打开一个文件后,立马就开始进行读写操作,根本就不考虑文件是否正常打开了。这种习惯一定要改掉