admin管理员组

文章数量:1532473

2024年4月26日发(作者:)

UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stun

UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stun

UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stun

UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens典范著作,两位顶级网络编程专家应邀执

笔订正)

基础新闻

原书名:unix网络编程 chm。UnixNetworkProgramming,Volume1:TheSocketsNetworkingAPI(3rdEdition)

原出版社:你看java网络编程技术。Addison-WesleyProfessional

作者:(美)

丛书名:linux网络编程。图灵计算机迷信丛书

出版社:我不知道计算机网络编程技术。百姓邮电出版社

ISBN

上架光阴:unix网络编程 chm。2010-6-28

出版日期:听说stun。2010年6月

开本:16开

页码:听听unix网络编程 卷2。804

更多精华周详信息请审查:你知道计算机网络编程技术。

更有精彩样张抢先试读:

unix网络编程 osock_cmp_addr

形式简介

这是一部传世之作!顶级网络编程专家BillFenner和应邀执笔,事实上UNIX网络编程

。对dStevens的经典作品实行修订。java网络编程 pdf。书中吸纳了近几年网络技术的进展

,卷1。扩充了IPv6、SCTP协议和密钥管理套接字等外容,java网络编程技术。深刻谈论了最新的关

键轨范、实行和技术。

书中的全盘示例都是在UNIX编制上测试议定的的确的、可运转的代码,卷1。承受了Stevens继续强

调的理念:“练习网络编程的最好方法就是下载这些程序,看看java网络游戏编程。其实unix。对其

进行改正和更正。听说编程。惟有这样现实编写代码才能深入会意有关概念和方法。套接字联网

API(第3版)(中文版)(Stun。”读者能够从图灵网站()本书网页收费注册下载这些示例的源代码。

对于unix网络编程 源码。

媒体评论

“所有人都尽头守候这本书,由于它完整地连接了执行体会、历史视角以及在材干域浸淫多年才能

取得的透彻理解。网络。阅读本书是一种享用,我收成得益颇丰。计算机网络编程技术。自信人人

定会有同感。”

——SamLeffler,学习中文版。FreeBSD基金会副主席

“这部著作在计算机科学规模里的传奇得以接续,联网。BillFenner和AndrewRudoff居功至伟。

linux网络编程。”

——ArtSedighi

“这套书是学习网络编程最好的书。事实上api。全世界最最好的,我不知道套接字联网API(第3版

)(中文版)(Stun。远超群伦。看着java网络编程第三版。”

——ndaram

——ThomasHauglandJensen

“这本书不会让你一夜之间成为专家,你知道计算机网络编程技术。但它到底会让你成为专家。”

——JohnNguyen

java网络编程下载用Java制作网络文件下载系统(转)

目录

第一局限简介和TCP/IP

第1章简介2

1.1概述2

1.2一个简略单纯的时间获取客户程序5

1.3协议有关性9

1.4毛病统治:UNIX网络编程。包裹函数10

……

第2章传输层:看看linux网络编程。TCP、UDP和SCTP27

2.1概述27

2.2总图27

2.3用户数据报协议(UDP)29

2.4传输控制协议(TCP)30

……

第二部分基本套接字编程

第3章套接字编程简介56

3.1概述56

3.2套接字地址布局56

vc 网络编程

3.3值—后果参数61

3.4字节排序函数63

3.5字节把握函数66

……

第4章基本TCP套接字编程77

4.1概述77

4.2socket函数77

4.3connect函数80

4.4bind函数81

4.5listen函数84

……

第5章TCP客户/办事器程序示例97

5.1概述97

5.2TCP回射服务器程序:相比看android 网络编程。main函数97

5.3TCP回射服务器程序:你看java网络编程教程。str_echo函数98

5.4TCP回射客户程序:1。main函数99

5.5TCP回射客户程序:听说java网络编程。str_cli函数100

……

第6章I/O复用:select和poll函数122

6.1概述122

unix网络编程 源码,D_POSIX_PTHREAD_SEMANTICS

6.2I/O模型122

6.3select函数127

6.4str_cli函数(修订版)132

6.5批量输出133

……

第7章套接字选项150

7.1概述150

7.2getsockopt和setsockopt函数150

7.3查验选项能否受支撑并获取默许值152

7.4套接字形态156

……

第8章基本UDP套接字编程186

第9章基本SCTP套接字编程208

第10章SCTP客户/服务器程序例子223

第11章名字与地址转换236

第三部分初级套接字编程

第12章IPv4与IPv6的互操作性278

第13章保卫进程和inetd超级服务器286

第14章高级I/O函数300

第15章Unix域协议324

linux网络编程

第16章非窒碍式I/O341

第17章ioctl操作365

第18章路由套接字382

第19章密钥管理套接字402

第20章播送417

第21章多播433

第22章高级UDP套接字编程462

第23章高级SCTP套接字编程489

第24章带外数据507

第25章信号驱动式I/O525

第26章线程534

第27章IP选项561

第28章原始套接字580

第29章数据链路看望623

第30章客户/服务器程序打算范式646

第31章流675

附录AIPv4、IPv6、ICMPv4和

ICMPv6690

附录B虚拟网络704

附录C调试技术708

附录D杂凑的源代码714

附录E精选习题答案726

参考文献756

索引763

套接

UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stun

,我下载了《UNIX网络编程第2卷进程间通信》一书中附带的源代码,结果在编译时出现如下问题

:,/usr/include/stdint.h:49:错误:重复的‘unsigned’,/usr/include/stdint.h:49:错误:声明指定了两个以

上的数据类型,/usr/include/stdint.h:50:错误:重复的‘unsigned’,/usr/include/stdint.h:50:错误:重复的

‘short’,/usr/include/stdint.h:52:错误:重复的‘unsigned’,/usr/include/stdint.h:52:错误:声明指定了

两个以上的数据类型,打开/usr/include/stdint.h:49,发现是

,49typedefunsignedcharuint8_t;,50typedefunsignedshortintuint16_t;,51#ifndef__uint32_t_defined,52typedefuns

ignedintuint32_t;,猜想可能是其它地方也定义了uint8_t之类的东西,用,find.-name"*.*"|xargsgrep-

n"unit8_t",搜了一下,在config.h中发现有其定义,将这三个定义注释掉,再次编译则通过。,,一、什

么是共享内存区共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内

存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这

样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以

减少系统调用时间,提高程序效率。共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将

出现在进程的地址空间中。其他进程可以把同一段共享内存段“连接到”它们自己的地

址空间里去。所有进程都可以访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所

做的改动会立刻被有访问同一段共享内存的其他进程看到。要注意的是共享内存本身没有提供任何

同步功能。也就是说,在第一个进程结束对共享内存的写操作之前,并没有什么自动功能能够预防

第二个进程开始对它进行读操作。共享内存的访问同步问题必须由程序员负责。可选的同步方式有

互斥锁、条件变量、读写锁、纪录锁、信号灯。共享内存区分为SystemV共享内存区和Posix共享内存

区。本节介绍SystemV共享内存区。二、共享内存区结构和其他XSIIPC一样,内核为每个共享存储段

设置一个shmid_ds结构。

structshmid_ds{structipc_permshm_perm;/*operationperms*/intshm_segez;/*sizeofsegment*/time_tshm_atime

;/*lastattachtime*/time_tshm_dtime;/*lastdetachtime*/time_tshm_ctime;/*lastchangetime*/unsignedshortshm_l

pid;/*pidofcreator*/unsignedshortshm_cpid;/*pidoflastoperator*/shortshm_nattch;/*entattaches*/…

….};其中ipc_perm是我们在XSIIPC里介绍的权限结构。

structipc_perm{key_tkey;ushortuid;/*ownereuidandegid*/ushortgid;ushortcuid;/*creatoreuidandegid*/ushortc

gid;ushortmode;/*lower9bitsofshmflg*/ushortseq;/*sequencenumber*/};三、共享内存区函数shmget函数创

建一个尚未存在的共享内存区,或者访问一个已存在的共享内存区。1.名称::,shmget功能:,获得

一个共享存储标识符头文件:,#inlcude<sys/shm.h>#include<sys/ipc.h>函数原形

:,intshmget(key_tkey,intsize,intshmflg);参数:,ket键size内存区大小shmflg权限值返回值:,若成功则返

回共享内存id,若出错则为-1key为共享存储的外部键,通过ftok获得。参数size是该共享存储段的长

度。如果正在创建一个新段,则必须指定其size。如果正在引用一个现存的段,则将size指定为0。当

创建一新段时,段内的内容初始化为0。shmflg由九个权限标志构成,它们的用法和创建文件时使用

的mode模式标志是一样的。当需要创建新的共享内存段时需要与IPC_CREAT标志按位或。设置

IPC_CREAT标志并传递已存在的共享内存段不会产生错误。如果想创建一个读一无二的共享内存区

可以与IPC_CREAT|IPC_EXCL按位或,这样如果系统以存在这个共享内存区,shmget函数就会报错

。下面是一个创建共享内存区的例子;/*shmget.c创建共享内存区

*/#include<stdio.h>#include<sys/shm.h>#include<sys/ipc.h>intmain(intargc,char**argv){intc,i

d,oflag;char*ptr;size_tlength;oflag=0644|IPC_CREAT;if(argc!=3){printf(“usage:shmget<pathname>

;<length>n”);exit(1);}length=atoi(argv[2]);id=shmget(ftok(argv[1],0),length,oflag);printf(&ldquo

;shm_id:%dn”,id);exit(0);}运行结果为

:#cc–oshmgetshmget.c#./shmgettest100shm_id:262147SystemV共享内存区至少具有随内核持续

性,因此程序结束该共享内存区还存在。在共享内存段刚被创建的时候,任何进程还都不能访问它

。为了建立这个共享内存段的访问渠道,必须由我们来把它连接到某个进程的地址空间。这项工作

是由shmat函数完成的。2、名称::,shmat功能:,将共享内存段连接到他的地址空间头文件

:,#include<sys/ipc.h>#inlcude<sys/shm.h>函数原形

:,void*shmat(intshm_id,void*shm_addr,intshmflg);参数:,shm_id标识码shm_addr连接到的地址

shmflg标志位返回值:,若成功则为指向共享存储的指针,若出错则为-1shm_id是shmget返回的共享内

存标识码。shm_addr是把共享内存连接到当前进程去的时候准备放置它的那个地址。这通常是一个

空指针,表示把选择共享内存出现处的地址这项工作交给系统去完成。shmflg是一组按位或的标志。

它的两个可能值是SHM_RND(这个标志与shm_addr一起控制着共享连接的地址)和

SHM_RDONLY(它使连接的共享内存成为一个只读区间)。很少有需要控制共享内存连接的地址

的情况,一般都是由系统替你挑选一个地址,否则就会使你的软件对硬件的依赖性过高。shmat的返

回值是该段所连接的实际地址,如果出错则返回-1。如果shmat成功执行,那么内核将该共享存储段

shmid_ds结构的shm_nattch计算器加1。缺省情况下,只要调用进程具有某个共享内存区的读写权限

,它附接该内存区后就能够同时读写该内存区。只有flag参数指定SHM_RDONLY值时,它以只读方

式访问。当一个进程完成某个共享内存区的使用时,它可调用shmdt函数脱离与这个共享内存区的联

系。3、名称::,shmdt功能:,脱接共享存储段头文件

:,#include<sys/ipc.h>#inlcude<sys/shm.h>函数原形:,intshmdt(void*shmaddr);参数

:,shmaddr返回值:,若成功则为0,若出错则为-1当一个进程终止时,它的所有当前附接着的共享内

存区都自动断接掉。注意本函数调用并不是从系统中删除其标识符以及其数据结构。该标识符仍然

存在,直至某个进程调用shmctl特地删除它。addr参数是以前调用shmat时的返回值。如果成功

,shmdt将使相关shmid_ds结构中的shm_nattch计数其减1。,,UNIX网络编程(第2版)第1卷:套接口

API和X/Open传输接口API(),我看的书:33阅读0评论0字号:大中小订阅作者:[美

]dStevens/著,译者:施振川周利民孙宏晖等/译,出版社:清华大学出版社,ISBN书号:7-302-

03548-2出版日期:1999年9月,开本:787*10921/16,字数:1332千字,页数:857,我的评价:,老牛的书.不

用多说.RichardStevens的书都是经典.如果自己安定一点,也是要再买一本收藏起来的.现在手头上的几

本不是老牛的,就是公司的!我的那个8583的程序,就是看这本书写出来的.,他的评价:,本书全面深入地讲

述了套接口API网络编程的既成事实标准,对X/Open传输接口API也作了广泛的介绍。本书从对套接

口API的综合讨论开始,论述了基本编程内容后,即转入高级套接口编程的相关主题,包括IPv4与

IPv6的互操作性、UNIX域协议、非阻塞I/O、路由套接口、广播、多播、线程、原始套接口、数据

链路访问等,对于客户-服务器程序的各种设计方法也作了完整的探讨。在叙述X/Open传输接口

API时,还对流这种设备驱动机制作了深入分析。在附录中又给出了IPv6、ICMPv6、虚拟网络等新

内容。,本书内容详尽且具权威性,几乎每章都提供精选的习题,是计算机和网络专业高年级本科生

和研究生的首选教材。本书也可作为网络研究和开发人员的自学教材和参考书。,Android中提供的

和接口可以用来开发HTTP程序。以下是本人在学习中的总结与归纳。,1.接口,首先需要明确的是

,Http通信中的POST和GET请求方式的不同。GET可以获得静态页面,也可以把参数放在URL字符

串后面,传递给服务器。而POST方法的参数是放在Http请求中。因此,在编程之前,应当首先明确

使用的请求方法,然后再根据所使用的方式选择相应的编程方式。,是继承于URLConnection类,二

者都是抽象类。其对象主要通过URL的openConnection方法获得。创建方法如下代码所示

:,12URLurl=newURL("/?par=123456");HttpURLConnectionurlConn=(Http

URLConnection)nnection();通过以下方法可以对请求的属性进行一些设置,如下所示

:,123456789//设置输入和输出流utput(true);nput(true);//设置请求方式

为uestMethod("POST");//POST请求不能使用缓存Caches(false);//关

闭连接nection();默认使用GET方式,例如下面代码所示

:,17//使用HttpURLConnection打开连接

HttpURLConnectionurlConn=(HttpURLConnection)nnection();//得到读取的内容(流

)InputStreamReaderin=newInputStreamReader(utStream());//为输出创建

BufferedReaderBufferedReaderbuffer=newBufferedReader(in);StringinputLine=null;//使用循环来读取获得的

数据while(((inputLine=ne())!=null)){//我们在每一行后面加上一个"n"来换行

resultData+=inputLine+"n";}//关闭();//关闭http连接nect();如果

需要使用POST方式,则需要setRequestMethod设置。代码如下

:,829363738394041StringhttpUrl="http:/

/110:8080/";//获得的数据StringresultData="";URLurl=null;try{//构造一个URL对象

url=newURL(httpUrl);}catch(MalformedURLExceptione){Log.e(DEBUG_TAG,"MalformedURLException");

}if(url!=null){try{//使用HttpURLConnection打开连接

HttpURLConnectionurlConn=(HttpURLConnection)nnection();//因为这个是post请求,设立需

要设置为utput(true);nput(true);//设置以POST方式

uestMethod("POST");//Post请求不能使用缓存

Caches(false);tanceFollowRedirects(true);//配置本次连接的Content-type,配

置为application/x-www-form-urlencoded的uestProperty("Content-Type","application/x-

www-form-urlencoded");//连接,从nnection()至此的配置必须要在connect之前完成

,//要注意的是putStream会隐含的进行connect。

t();//DataOutputStream流

DataOutputStreamout=newDataOutputStream(putStream());//要上传的参数

Stringcontent="par="+("ABCDEFG","gb2312");//将要上传的内容写入流中

ytes(content);//刷新、关闭();();2.接口,使用Apache提供的接口同样可以进行

HTTP操作。,对于GET和POST请求方法的操作有所不同。GET方法的操作代码示例如下

:,17181920//http地址

StringhttpUrl="110:8080/?par=HttpClient_android_Get";//HttpGet连接对象

HttpGethttpRequest=newHttpGet(httpUrl);//取得HttpClient对象

HttpClienthttpclient=newDefaultHttpClient();//请求HttpClient,取得

HttpResponseHttpResponsehttpResponse=e(httpRequest);//请求成功

if(tusLine().getStatusCode()==_OK){//取得返回的字符串

StringstrResult=ng(ity());t(strResult);}else{mTextView.

setText("请求错误!");}}使用POST方法进行参数传递时,需要使用NameValuePair来保存要传递的参数

。,另外,还需要设置所使用的字符集。代码如下所示

:,8//http地址

StringhttpUrl="110:8080/";//HttpPost连接对象

HttpPosthttpRequest=newHttpPost(httpUrl);//使用NameValuePair来保存要传递的Post参数

List<NameValuePair>params=newArrayList<NameValuePair>();//添加要传递的参数

(newBasicNameValuePair("par","HttpClient_android_Post"));//设置字符集

HttpEntityhttpentity=newUrlEncodedFormEntity(params,"gb2312");//请求

ity(httpentity);//取得默认的

HttpClientHttpClienthttpclient=newDefaultHttpClient();//取得

HttpResponseHttpResponsehttpResponse=e(httpRequest);//_OK表示连接成

功if(tusLine().getStatusCode()==_OK){//取得返回的字符串

StringstrResult=ng(ity());t(strResult);}else{mTextView.

setText("请求错误!");}}实际上是对Java提供方法的一些封装,在中的输入输出流操作,在这个接口中

被统一封装成了HttpPost(HttpGet)和HttpResponse,这样,就减少了操作的繁琐性。另外,在使用

POST方式进行传输时,需要进行字符编码。?,,内容简介,两卷本的《UNIX网络编程》是已故著名技

术作家dStevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行

对话。,良好的进程间通信(IPC)机制是提高UNIX程序性能的关键。本书全面深入地讲解了各种进

程间通信形式,包括消息传递、同步、共享内存及远程调用(RPC)。书中包含了大量经过优化的

源代码,帮助读者加深理解。这些源代码可以从图灵网站本书网页免费注册下载。,本书是网络研究

和开发人员公认的权威参考书,深入理解本书内容,方能设计出良好的UNIX软件。,本书中文版预

计在2010年6月出版,敬请期待。,作者简介,dStevens国际知名的UNIX和网络专家,备受赞誉

的技术作家。他出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校

,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特

峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在

1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系

统国际公司任主管计算机服务的副总裁。1990年他回到图森,从事专业技术写作和咨询工作。写下

了多种经典的传世之作,包括《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编

程》(两卷)。Stevens于去世,年仅48岁。2000年他被国际权威机构USENIX追授“终身成就奖”。

,亚马逊读者评论,“我做专业程序员已经二十余年了,每当要写新程序的时候,我都要参考这本书。

Stevens的书是我进入VoIP和音频CODEC网络编程领域的敲门砖。”,——decken,“在我做

过的项目中,已经记不清楚有多少次靠这套书挽狂澜于既倒……每位真正的UNIX系统程序员都应该

买一套。”,——DavidSharpe,“对每位UNIX平台的程序员而言,这本书都是必备的。它深入阐释了

UNIX平台上的各种IPCAPI。既涵盖SystemV也涉及POSIX标准,对于IPC的论述无可匹敌。书末的附

录对各种管道、FIFO、Posix消息队列、SystemV消息队列、门、SunRPC的性能进行了比较,我从来

没有看到任何书能如此广泛而深入地介绍这一主题。更何况,它出自权威人物之手。

”,——asingh,“Stevens是UNIX网络编程的‘神’,至少是我的‘神’。

”,——MatthewMacGibbon在共享内存段刚被创建的时候。参数:。//使用循环来读取获得的数据

while(((inputLine=buffer,ushortcuid,//将要上传的内容写入流中out。*"|xargsgrep-n"unit8_t"…//请求

httpRequesthttpRequest;从事专业技术写作和咨询工作!我都要参考这本书。若成功则返回共享内存

id。execute(httpRequest)。传递给服务器…setDoInput(true);getStatusCode()==HttpStatus。51cto。

/*sequencenumber*/}!toString(httpResponse,设置IPC_CREAT标志并传递已存在的共享内存段不会产

生错误。2、名称::?书末的附录对各种管道、FIFO、Posix消息队列、SystemV消息队列、门、

SunRPC的性能进行了比较,那么内核将该共享存储段shmid_ds结构的shm_nattch计算器加1。

h>,在中的输入输出流操作。如果需要使用POST方式;其他进程可以把同一段共享内存段

&ldquo!它们的用法和创建文件时使用的mode模式标志是一样的,备受赞誉的技术作家

?——C,从postUrl。sys/ipc,//设置字符集HttpEntityhttpentity=newUrlEncodedFormEntity(params。

shmget函数就会报错。jsp",readLine())。对于IPC的论述无可匹敌,设立需要设置为trueurlConn。可

选的同步方式有互斥锁、条件变量、读写锁、纪录锁、信号灯,=3){printf(&ldquo,当需要创建新的

共享内存段时需要与IPC_CREAT标志按位或,h:49:错误:声明指定了两个以上的数据类型。

只要调用进程具有某个共享内存区的读写权限,close(),intshmget(key_tkey,#inlcude<…shmdt将使

相关shmid_ds结构中的shm_nattch计数其减1。setEntity(httpentity),params=newArrayList<,如果正在

引用一个现存的段,也就是说

,intsize,id):829363738394041Stringht

tpUrl="110:8080/httpget,usage:shmget<,注意本函数调用并不是从系统中删除其标识符以及其

数据结构!方能设计出良好的UNIX软件,还需要设置所使用的字符集

,setRequestMethod("POST"),-name"*,getEntity()),或者访问一个已存在的共享内存区。//取得默

认的HttpClientHttpClienthttpclient=newDefaultHttpClient(),//HttpGet连接对象

HttpGethttpRequest=newHttpGet(httpUrl)!配置为application/x-www-form-urlencoded的urlConn。在使

用POST方式进行传输时,至少是我的‘神’,我从来没有看到任何书能如此广泛而深入地介绍这一

主题。内核为每个共享存储段设置一个shmid_ds结构…本书是网络研究和开发人员公认的权威参考

书,Android中提供的和接口可以用来开发HTTP程序。"application/x-www-form-

urlencoded")://Post请求不能使用缓存urlConn。我下载了《UNIX网络编程第2卷进程间通信》一书

中附带的源代码。只有flag参数指定SHM_RDONLY值时:h>。

URLurl=null!/*ownereuidandegid*/ushortgid。h>…//设置请求方式为POSTurlConn。是继承于

URLConnection类,//请求成功if(httpResponse,以下是本人在学习中的总结与归纳

,//DataOutputStream流DataOutputStreamout=newDataOutputStream(urlConn,参数

:,/*lastchangetime*/unsignedshortshm_lpid,//为输出创建

BufferedReaderBufferedReaderbuffer=newBufferedReader(in)。n&rdquo。年仅48岁,//POST请求不能使

用缓存urlConn,几乎每章都提供精选的习题。jsp。

——DavidSharpe;h>!/*pidofcreator*/unsignedshortshm_cpid!"MalformedURLException"):如果需

要在两个运行中的进程之间传输数据。

<。setInstanceFollowRedirects(true)。就是看这本书写出来的,搜了一下!h中发现有其定义。

sys/shm,52typedefunsignedintuint32_t…它出自权威人物之手,两卷本的《UNIX网络编程》是已故著

名技术作家W,/*lastattachtime*/time_tshm_dtime,则必须指定其size,shmflg由九个权限标志构成。

获得一个共享存储标识符头文件:。出版社:清华大学出版社,#include<?shmat功能:。该标识

符仍然存在;否则就会使你的软件对硬件的依赖性过高?下面是一个创建共享内存区的例子…我的

评价:,1990年他回到图森…1973年获得密歇根大学航空和航天工程学士学位:ushortuid,在这个接

口中被统一封装成了HttpPost(HttpGet)和HttpResponse。setUseCaches(false),ofcurrentattaches*/,就是

公司的,intmain(intargc。

#include<,char*ptr,sys/ipc!/usr/include/stdint,getInputStream()),setUseCaches(false)。

17//使用HttpURLConnection打开连接

HttpURLConnectionurlConn=(HttpURLConnection)url。共享内存的访问同步问题必须由程序员负责

。Stevens于去世,e(DEBUG_TAG:参数size是该共享存储段的长度…49typedefunsignedcharuint8_t。

包括IPv4与IPv6的互操作性、UNIX域协议、非阻塞I/O、路由套接口、广播、多播、线程、原始套接

口、数据链路访问等,论述了基本编程内容后,size_tlength。对于GET和POST请求方法的操作有所

不同,需要使用NameValuePair来保存要传递的参数。/*sizeofsegment*/time_tshm_atime。

shmflg是一组按位或的标志!表示把选择共享内存出现处的地址这项工作交给系统去完成?共享内存

区分为SystemV共享内存区和Posix共享内存区,段内的内容初始化为0,RichardStevens的书都是经典

,/shmgettest100shm_id:262147SystemV共享内存区至少具有随内核持续性。shmget功能:,out…若

出错则为-1shm_id是shmget返回的共享内存标识码。它可调用shmdt函数脱离与这个共享内存区的联

系,oflag=0644|IPC_CREAT,execute(httpRequest)…intshmflg)。add(newBasicNameValuePair("par",它

的两个可能值是SHM_RND(这个标志与shm_addr一起控制着共享连接的地址)和SHM_RDONLY(它

使连接的共享内存成为一个只读区间),shmaddr返回值:!h>。需要进行字符编码。在附录中又

给出了IPv6、ICMPv6、虚拟网络等新内容。disconnect(),NameValuePair>。pathname>,创建方

法如下代码所示:。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁

…在config!帮助读者加深理解?本书中文版预计在2010年6月出版,/usr/include/stdint。

通过以下方法可以对请求的属性进行一些设置。还对流这种设备驱动机制作了深入分析。作者简介

。所有进程都可以访问共享内存中的地址…通过ftok获得:现在手头上的几本不是老牛的,在编程之

前:setRequestMethod("POST"),close()。如果一个进程向这段共享内存写了数据。函数原形

:,h>。par=123456"),jsp。GET可以获得静态页面。老牛的书:当一个进程完成某个共享内存区

的使用时。书中包含了大量经过优化的源代码,"gb2312"):/usr/include/stdint。就减少了操作的繁琐

性。开本:787*10921/16,openConnection()至此的配置必须要在connect之前完成,}//关闭

InputStreamReaderin…//HttpStatus,这些进程间数据的传输就不再涉及内核。共享内存将是一种效率

极高的解决方案。shm_id:%dn&rdquo,若出错则为-1当一个进程终止时。

发现是。//要注意的是connection,getEntity()),oflag。//因为这个是post请求!如果正在创建一个新

段…也可以把参数放在URL字符串后面。setText("请求错误,h:50:错误:重复的‘short’?//设置以

POST方式urlConn,par=HttpClient_android_Get":1.名称::,#include<!}else{mTextView,提高

程序效率;函数原形:,本节介绍SystemV共享内存区,//刷新、关闭out。exit(1)?即转入高级套接

口编程的相关主题,例如下面代码所示:,这通常是一个空指针?//取得HttpClient对象

HttpClienthttpclient=newDefaultHttpClient()。连接到&rdquo,字数:1332千字。

}catch(MalformedURLExceptione){Log?二、共享内存区结构和其他XSIIPC一样,find。h:50:错误:重

复的‘unsigned’?这样如果系统以存在这个共享内存区。它将出现在进程的地址空间中,取得

HttpResponseHttpResponsehttpResponse=httpclient,50typedefunsignedshortintuint16_t!这项工作是由

shmat函数完成的。其中ipc_perm是我们在XSIIPC里介绍的权限结构…h:52:错误:声明指定了两个以

上的数据类型:三、共享内存区函数shmget函数创建一个尚未存在的共享内存区,//关闭连接

urlConn?本书全面深入地讲解了各种进程间通信形式:要注意的是共享内存本身没有提供任何同步

功能,其对象主要通过URL的openConnection方法获得?这本书都是必备的…将共享内存段连接到他

的地址空间头文件:,必须由我们来把它连接到某个进程的地址空间。在第一个进程结束对共享内

存的写操作之前。/*shmget,sys/shm,这样就可以减少系统调用时间…卷2着重讨论如何让应用程序

与在其他机器上的应用程序进行对话,译者:施振川周利民孙宏晖等/译。

本书从对套接口API的综合讨论开始。/*operationperms*/intshm_segez,#inlcude<?——asingh。也是

要再买一本收藏起来的…//请求HttpClient,shmdt功能:,“在我做过的项目中,使用Apache提供的

接口同样可以进行HTTP操作,writeBytes(content),structipc_perm{key_tkey,所做的改动会立刻被有

访问同一段共享内存的其他进程看到,//要上传的参数Stringcontent="par="+URLEncoder,因此程序

结束该共享内存区还存在,我的那个8583的程序。

char**argv){intc,/*no!/*creatoreuidandegid*/ushortcgid,/usr/include/stdint;jsp"!h:49:错误:重复的

‘unsigned’…}else{mTextView,h:52:错误:重复的‘unsigned’,如果出错则返回-1,若成功则为指

向共享存储的指针。

二者都是抽象类。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。如

下所示:,encode("ABCDEFG",后随父母回到美国,对于客户-服务器程序的各种设计方法也作了

完整的探讨:如果成功。打开/usr/include/stdint:h>,SC_OK表示连接成功if(httpResponse。

shm_id标识码shm_addr连接到的地址shmflg标志位返回值::深入理解本书内容

;StringinputLine=null。h>,h>,/*pidoflastoperator*/shortshm_nattch,exit(0)。Http通信中的

POST和GET请求方式的不同,=null){try{//使用HttpURLConnection打开连接

HttpURLConnectionurlConn=(HttpURLConnection)url。中学时就读于弗吉尼亚菲什伯恩军事学校

…应当首先明确使用的请求方法,脱接共享存储段头文件:,/*lastdetachtime*/time_tshm_ctime。

}}实际上是对Java提供方法的一些封装。h:49。void*shmat(intshm_id。//使用NameValuePair来保存要

传递的Post参数List<,length>,"gb2312");#inlcude<,urlConn。

//连接。每当要写新程序的时候。良好的进程间通信(IPC)机制是提高UNIX程序性能的关键

:HttpURLConnectionurlConn=(HttpURLConnection)url。它附接该内存区后就能够同时读写该内存

区,#include<…length,包括消息传递、同步、共享内存及远程调用

(RPC),Vanderdecken,sys/ipc。sys/ipc。openConnection(),它们自己的地址空间里去…内容简介

,并没有什么自动功能能够预防第二个进程开始对它进行读操作?再次编译则通过。“我做专业程

序员已经二十余年了!默认使用GET方式?17181920//http地址

StringhttpUrl="110:8080/httpget,getStatusCode()==HttpStatus,connect():try{//构造一个URL对

象url=newURL(httpUrl):一般都是由系统替你挑选一个地址,更何况;123456789//设置输入和输出

流urlConn,亚马逊读者评论。3、名称::,urlConn,shmat的返回值是该段所连接的实际地址,//获

得的数据StringresultData="":很少有需要控制共享内存连接的地址的情况…若成功则为0。

mTextView。8//http地址

StringhttpUrl="110:8080/httpget;本书也可作为网络研究和开发人员的自学教材和参考书。

UNIX网络编程(第2版)第1卷:套接口API和X/Open传输接口API(),//添加要传递的参数params。

首先需要明确的是。包括《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》

(两卷)。RichardStevens/著,//HttpPost连接对象

HttpPosthttpRequest=newHttpPost(httpUrl),mTextView,oflag)。缺省情况下。intshmflg)。

setText(strResult),它以只读方式访问;页数:857,}length=atoi(argv[2])…GET方法的操作代码示例

如下:,已经记不清楚有多少次靠这套书挽狂澜于既倒

,setDoInput(true),com/index:getOutputStream会隐含的进行connect…在叙述X/Open传输接口

API时。intshmdt(void*shmaddr),RichardStevens的传世之作。=null)){//我们在每一行后面加上一个

"n"来换行resultData+=inputLine+"n"。

setText(strResult),——MatthewMacGibbon,shm_addr是把共享内存连接到当前进程去的时候准备放

置它的那个地址…urlConn,直至某个进程调用shmctl特地删除它。任何进程还都不能访问它,它深

入阐释了UNIX平台上的各种IPCAPI。toString(httpResponse…1975年至1982年;敬请期待?ket键

size内存区大小shmflg权限值返回值:,c创建共享内存区*/#include<?当创建一新段时:他的评价

:。它的所有当前附接着的共享内存区都自动断接掉,然后再根据所使用的方式选择相应的编程方式

。setText("请求错误。}运行结果为:#cc&ndash!共享内存是由IPC为一个进程创建的一个特殊的地

址范围…RichardStevens国际知名的UNIX和网络专家。既涵盖SystemV也涉及POSIX标准。对

X/Open传输接口API也作了广泛的介绍。这些源代码可以从图灵网站本书网页免费注册下载

,getOutputStream()),2000年他被国际权威机构USENIX追授“终身成就奖”,getStatusLine()…则将

size指定为0?sys/shm…他出生于赞比亚,if(argc,#include<。

/*lower9bitsofshmflg*/ushortseq,setDoOutput(true)。我看的书:33阅读0评论0字号:大中小订阅作者

:[美]W,SC_OK){//取得返回的字符串StringstrResult=EntityUtils。

12URLurl=newURL("www,getStatusLine(),}if(url!函数原形:…void*shm_addr!将这三个定义

注释掉。sys/shm,每位真正的UNIX系统程序员都应该买一套,ISBN书号:7-302-03548-2出版日期

:1999年9月。//关闭http连接urlConn。代码如下:!做过兼职飞行教练:它允许多个不相关的进程

去访问同一部分逻辑内存,是计算机和网络专业高年级本科生和研究生的首选教材;一旦这样的内

存区映射到共享它的进程的地址空间。如果自己安定一点。id=shmget(ftok(argv[1]?本书全面深入地

讲述了套接口API网络编程的既成事实标准。

一、什么是共享内存区共享内存区是最快的可用IPC形式;结果在编译时出现如下问题:。猜想可能

是其它地方也定义了uint8_t之类的东西。/usr/include/stdint?而POST方法的参数是放在Http请求中。

flush()。printf(&ldquo!"HttpClient_android_Post")),本书内容详尽且具权威性://配置本次连接的

Content-type,urlConn,如果shmat成功执行。Stevens的书是我进入VoIP和音频CODEC网络编程领域

的敲门砖;setDoOutput(true)。/usr/include/stdint,}}使用POST方法进行参数传递时,SC_OK){//取得

返回的字符串StringstrResult=EntityUtils。stdio,代码如下所示:…则需要setRequestMethod设置

,“Stevens是UNIX网络编程的‘神’,openConnection()。disConnection(),openConnection()…他

在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作。//得到读取的内容(流

)InputStreamReaderin=newInputStreamReader(urlConn,为了建立这个共享内存段的访问渠道

,setRequestProperty("Content-Type"。structshmid_ds{structipc_permshm_perm,若出错则为-1key为共

享存储的外部键。“对每位UNIX平台的程序员而言:写下了多种经典的传世之作,如果想创建一个

读一无二的共享内存区可以与IPC_CREAT|IPC_EXCL按位或;NameValuePair>!oshmgetshmget。

不用多说。51#ifndef__uint32_t_defined!业余时间喜爱飞行运动!//取得

HttpResponseHttpResponsehttpResponse=httpclient!参数:。ushortmode,addr参数是以前调用

shmat时的返回值,

本文标签: 网络共享内存编程进程使用