摘要:
UNIX环境高级编程---文件描述符浅析最近看到一本书叫《UNIX环境高级编程》,网上称这本书被誉为UNIX编程“圣经”,对所有不同层次UNIX/LINUX程序员是一本不可缺少的参考书。自己最近恰好看到GLIB中IOChannel这部分,关于linux的IO这块很不清楚,先研究完这本书再说。文件描述符是一个小的非负整数,内核用以标识一个特定进程正在存访的文件。当内核打开一个现存文件或创建一个新文件时,它就返回一个文件描述符。当读、写文件时,就可使用它。说白了就是我们通常使用的句柄一个意思。一、文件描述符----文件表----v节点结构三者的联系既然文件描述符标识特定进程正在访问的文件,那进程跟 阅读全文
摘要:
一、TCP协议1、TCP 通过以下方式提供可靠性: ◆ 应用程序分割为TCP认为最合适发送的数据块。由TCP传递给IP的信息单位叫做报文段。 ◆ 当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能记时收到一个确认,它 就重发这个报文段。 ◆ 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常延迟几分之一秒。 ◆ TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化如果收到报文段的检验和有差错,TCP将丢弃这个报文段和不确认收到这个报文段。 ◆ 既然TCP报文段作为IP数据报来传输,而IP 阅读全文
摘要:
1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。 (3) 客户必须再次回应服务段一个ACK报文,这是报文段3. 2、连接终止协议(四次分手) 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一... 阅读全文
摘要:
摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用,它的函数原型是:#include<sys/socket.h>int listen(int sockfd, int backlog)返回:0──成功, -1──失败参数sockfd被listen函数作用的套接字,sockfd之前由socket函数返回。在被socket函数 返回的套接字fd之时,它是一个主动连接的 阅读全文
摘要:
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型 有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、listen()、connect()函数3.4、accept()函数3.5、read()、write()函数等3.6、close( 阅读全文
摘要:
一、问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题1.socket与进程的关系1).socket与进程间的关系:socket 用来让一个进程和其他的进程互通信息(IPC),而Socket接口是TCP/IP网络的API接口函数。2).进程间通信(本机内)进程间通信(不同计算机,要联网)2、socket与文件的关系——如何理解socket是种特殊的I/O?1)Socket最先应用于Unix操作系统,如果了解Unix系统的I/O的话,就很容易了解Socket了,因为Socket数据传输其实就是一种特殊的I/O。 2)可对其进行文件操作3)有文件描述符。而文件描述符的本质是一个 阅读全文
摘要:
作者: 阮一峰日期: 2010年2月27日1.让我从一件新闻讲起。2009年,计算机业界发生了一件大事:甲骨文公司以74亿美元收购SUN公司。消息宣布后,有一个人坚决反对这笔交易。他叫Michael Widenius,是数据库软件MySQL的主要创始人。他为什么要反对呢?因为MySQL现在归SUN公司所有,一旦收购成功,就将属于甲骨文公司所有。但是,后者的主要产品是Oracle数据库,与MySQL是竞争关系。所以,甲骨文公司不可能扶持MySQL的后继开发,甚至有可能杀死MySQL。Michael Widenius不能接受这个事实,他发起万人签名,提交请愿书,要求欧盟委员会否决这项交易。具体情况 阅读全文
摘要:
作者: 阮一峰日期: 2010年2月20日写前一篇网志时,我参考了Ryan Paul的文章。他是资深Linux程序员和评论者。他对Android许可证的评论,是我见到的最准确、最通俗易懂的介绍。当时,我翻译了一些片段,打算在自己的文章中引用,但是后来没用上。我觉得不甘心,于是今天就把全文译出,贴在下面,希望让更多的朋友看到。如果你对GPL、ASL、BSD这一类的许可证名字,只有一些模模糊糊的概念,搞不清楚它们之间的区别。那么,我强烈推荐你阅读此文,读完后,你就会对开源软件的许可证,有一个基本的认识了。值得指出的是,此文写于2007年,当时Google刚刚宣布Android项目,代码还没有完成, 阅读全文
摘要:
作者: 阮一峰日期: 2010年2月 4日满大街都在谈论Android。它是当红炸子鸡。许多人觉得,iPhone将受到它的强力挑战。我也曾经对它充满了期待,但是后来的事态发展,令我改变了看法。前几天,我就在网志上写了自己的担忧:“首先,Android应用程序只能用java语言开发,莫非所有的应用程序都运行在一个巨大的虚拟机上?(【更正】网友留言指出,2009年6月Android发布NDK工具包,支持C/C++语言编程,不过性能不如SKD工具包中的Java语言。 )其次,Google对Android采用了一种全面霸权式的管理,完全不是其他开源软件的开发方式,一切都由Google说了算,很多地方是 阅读全文
摘要:
最近看了下关于广播方面的东西,加深了理解,也纠正了自己以前的不正确的看法。 关于广播有2中注册方式,一种是在代码中注册,也叫动态注册,另一种是在AndroidManifest里面注册,也叫静态注册。 不管在哪个里面注册,都需要发送广播sendBroadcast()。广播发送的是一个Intent,intent里面一般是action。 如果是在代码里面注册,一般在onResume()方法里面注册。 1 @Override 2 protectedvoid onResume() { 3 // TODO Auto-generated method stub 4 5 ... 阅读全文
摘要:
Android超过iPhone不是一种偶然,而是Android战胜iPhone的一种必然。1、Android价格占优 价廉性能并不低消费者选择产品,价格是必然要考虑的一大因素,iphone虽好,但是价格让一般人望而却步。苹果就像是宝马、奔驰,虽然大家都认为它很好,但是一 般人消费不起,只有看的份。而Android,如同大众,满大街跑的都是,不仅如此,还有一些型号是可以与宝马、奔驰相媲美的。虽然Android平台的手机价廉,但是其性能却一点也不低廉,触摸效果并不比苹果差到哪里去。Android平台简单实用,无论是功能还是外观设 计,都可以与苹果一决高下。当消费者考虑价格因素之后,在数量众多的an 阅读全文
摘要:
本文版权归飞雪无情 所有,转载请注明出处, 永久链接: http://flysnow.iteye.com/blog/812375一: Android 项目的目录结构 Android 项目结构概览。其实 Android 项目的目录结构和 Java 的差不多,没有太大变化,如下图: 可以看到 src 文件夹里的是源文件, Android2.2 是引用的类库,这些和 java 的都一样,那么下面的这个 gen 是什么呢?这个里面的类就是 ADT 自动生成的啦,一般只有一个 R.java 文件,是不能修改的,那么他是怎么生成的呢,看到下面的 res 文件夹了吗? R.java 就是根据资源文件夹 re 阅读全文
摘要:
1、ANDROID系统现在有多个版本分别是1.5、1.6、2.0.1、2.1 2.22.3软件基本上是通用的,现在比较主流的系统版本为2.2或2.1,最新的是2.3系统,不过不加以购买1.5或1.6系统的android 手机,这些系统版本太早软件兼容性较差。google是android系统的出品公司,谷歌也通过贴牌的方式出过两台自由品牌手机,分别是由HTC代工的 Nexus One和三星代工的Nexus S 2、ANDROID手机现在有四种分辨率,低端是240*320、主流分辨率是320*480、高端机的分辨率为480*854或480×800,其中 QVGA分辨率软件兼容性最差,不过 阅读全文
摘要:
1、eoe Android开发者论坛 目前国内最早的Android开发者社区,人气非常旺聚集了不少Android开发方面的高手,开发中遇到的问题大都能在这里获得解决,网站最大的特色是定期发布《eoe特刊》,问答频道和资料分享做的也不错。访问地址:http://www.eoeandroid.com2、 AndDev 国外非常好的一个Android开发者论坛,论坛版块划分完全面向开发者,从入门到进阶话题很全面,版主的水平也非常高,经常会出一些教程。访问地址:http://www.anddev.org/3、 helloAndroid以教程为最大特色的国外网站对大家系统学习Android知识非常有帮. 阅读全文
摘要:
在Android的应用程序开发中,通常使用的是Java语言,除了要熟悉Java语言的基础外,还需要了解Android提供的Java扩展功能。一、重要包描述Android.app:提供高层的程序模型、提供基本的运行环境。Android.content:包含对各种的设备上的数据进行访问和发布的类。Android.database:通过内容提供者浏览和操作数据库。Android.graphics:底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。Android.location:定位和服务的相关类。Android.media:提供了一些管理音频视频的媒体接口的相关类。Andro 阅读全文
摘要:
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)二、AndroidManifest.xml结构<?xmlversion="1.0&qu 阅读全文
摘要:
每个Android的application都必须包含一个 AndroidManifest.xml,且文件名是固定的,不能修改。应用程序需要通过它向Android系统提供一些必需的信息,且需要在 application运行前提供给系统,如下图所示: AndroidManifest.xml的功能介绍AndroidManifest.xml主要包含以下功能:说明application的java 数据包,数据包名是application的唯一标识;描述application的component;说明application的component运行在哪个process下;声明application所必须具备 阅读全文
摘要:
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下:android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)android.permission.ACCESS_COARSE_LOCATION 允许一个程 阅读全文
摘要:
一,重要性AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个 android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。一个典型的Android应用程序的结构如下图所示: 二,主要功能它指定了该应用程序的. 阅读全文