关于SIGPIPE导致的socket服务端程序意外退出的问题

在Linux C网络编程中,会遇到这样的问题。当创建了一个套接字并listen之后,等待客户端发来请求并accept,此时向客户端回传信息(用write或send)会导致服务端程序意外退出。通过监控发现时在执行write或send的时候程序意外退出。 经过研究发现,程序意外退出不是偶然,在每次客户端连接并向客户端返回数据的时候都会退出。原因:建立了socket连接后,如果长时间不用,会被 断开,这时候如果再调用send或write()函数,linux内核会给进程发出SIGPIPE信号,该信号缺省的处理办法是终止进程。 解决方法: #include<signal.h> 在main函数中加入 signal(SIGPIPE,SIG_IGN); 即可解决问题。

Java地图服务器

今天主要是完成了地图服务器的架设。前期的解析google地图的编码的代码已经是有的,现在就把一些遇到的问题写出来。 1.Java的Socket连接后的数据传输,因为一开始用的inputstream.readutf(),所以导致在和C的联调中出现了问题,后来改成了readline()暂时解决了问题,但总觉得不是很好,尝试了read(byte[])的方法。 2.Java中的绘制图片,就是在后台建立一个BufferImage,然后creategraphics(),然后进行绘图,基本上也就这样了。 绘图代码如下: /** * @param _mapnames是9张地图的名字 * @return 成功是File文件 | 失败则是null */ private File drawMap(String[][] _mapdata) { File[][]…

Android自定义控件

最近网上下了一个关于解码h264的demo,然后自己进行了一些改进,中途有一个问题,就是对方使用的是直接在onCreate()中setContentView();然后整个界面只有那么一个控件,觉得很不合适,于是想改,将其封装到一个View中。 但是一开始就出现了问题,什么xml的错误,和nosuchmethod等等,于是开始实验,最后发现,在View的构造函数中添加: public VView(Context _context, AttributeSet _attriAttributeSet){ super(_context, _attriAttributeSet); setFocusable(true); int i = mPixel.length; for(i=0; i<mPixel.length; i++){ mPixel[i]=(byte)0x00; } }…

小黄鸡的Java调用

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.List; public class post_request { private String…

雪花飘飘-JavaScript

这段代码,本来很早之前就已经在使用了,只是当时因为个人原因,所以一直没有公开,这次闲着无聊,就把里面的文档全部写成英文,一方面锻炼自己的英文能力,一方面也尝试着git。 在<head>标签里加入这段JS就行。 具体代码在:GitHub上,各位可以移步。 下面是介绍作用,第一点,雪花完全模拟现实,能够融化,同时,你的鼠标也能模拟风的效果。 在配置文件中,你还可以将雪花的颜色改成自己喜欢的颜色,例如紫色。

软件工程概论考点

软件工程概述 软件发展:软件的定义 软件是能完成既定功能和性能的可执行的计算机程和使程序正常执行的数据,和描述程序的操作的文档。 软件危机:主要问题、软件危机的表现、产生软件危机的原因、缓解软件危机的途径 主要问题:质量低下,无法满足用户需求,可维护性差。 表现:1.对软件开发成本和进度估计不足。 2.用户对已完成的软件不满意。 3.软件的质量不可靠。 4.不可维护。 5.软件没有对应的文档。 6.软件成本在计算机中的成本上升。 7.软件开发生产率提高的速度不如计算机普及速度。 原因:1.与软件本身的特点有关。2.与软件开发和维护的方法不正确有关。 缓解途径:吸收经验和教训,应用推广在计算机软件开发中总结的好的方法。 软件开发的生命周期:8个阶段 需求分析阶段—>规格说明阶段—>设计阶段—>实现阶段—>集成阶段—>测试阶段—>维护阶段—>退役 软件生命周期过程模型 定义 软件开发的过程是软件生命周期。 软件生命周期的两种典型的阶段(详细解释)…

马克思复习提纲

    再过7天就要马克思的期末考试了,老师画的重点太分散,然后看着书觉得很不爽,然后就自己打成电子搞了,顺便也练习下打字速度。以下是内容: //注意,此份资料仅限于苏州大学2011级2013.1.12的期末考试使用 /**********分割线******************************************************/ 马克思复习提纲 绪论。马克思是关于无产阶级和人类解放的科学 1.什么是马克思主义。 马克思主义是无产阶级思想的科学体系。内容涵盖政治经济文化军事历史和人类社会发展与自然界的关系等诸多领域和各个方面。 从创造者,继承者角度讲,马克思主义是由马克思恩格斯创立的,而由之后各个时代的继承者的不断丰富和发展的观点和学说的体系。 从阶级属性讲,马克思主义是无产阶级争取自身解放和整个人类解放的科学理论,是关于无产阶级斗争的性质,目的和解放条件的学说。 从研究对象和主要内容讲,是无产阶级的科学世界观和方法论,是关于自然社会和思维发展的普遍规律的学说,使馆与资本主义发展和转变为社会主义以及社会主义和共产主义发展的普遍理论。 马克思主义是由一系列的基本理论,基本观点和基本方法构成的科学体系,他是一个完整的整体。 2.马克思主义的产生条件和阶级基础 资本主义经济的发展,提供了经济社会历史条件。 无产阶级反对资产阶级的斗争日趋激烈化,对科学理论的提出了强烈的需求。 3.马克思理论来源 德国古典哲学,英国古典政治经济学,空想社会主义。 4.马克思主义的科学性和革命性的统一和基础。 马克思主义是最基本的世界观和方法论。辩证唯物主义与历史唯物主义。 马克思主义最鲜明的政治立场。以劳动人民为主体的最广大人民的根本利益 马克思主义最重要的理论品质。一切从实际出发,实事求是。…