??xml version="1.0" encoding="utf-8" standalone="yes"?>天堂а在线中文在线无限看推荐,91久久精品国产,国产精品99蜜臀久久不卡二区http://www.aygfsteel.com/pandawang/zh-cnTue, 17 Jun 2025 17:43:20 GMTTue, 17 Jun 2025 17:43:20 GMT60Winsock 10053错误分析http://www.aygfsteel.com/pandawang/archive/2013/11/28/406922.htmlLong Long AgoLong Long AgoThu, 28 Nov 2013 03:22:00 GMThttp://www.aygfsteel.com/pandawang/archive/2013/11/28/406922.htmlhttp://www.aygfsteel.com/pandawang/comments/406922.htmlhttp://www.aygfsteel.com/pandawang/archive/2013/11/28/406922.html#Feedback1http://www.aygfsteel.com/pandawang/comments/commentRss/406922.htmlhttp://www.aygfsteel.com/pandawang/services/trackbacks/406922.htmlWinsock 10053错误分析

 WSAGetLastError可能会返?/span>10053错误Q查msdn的解释是Q?/span>

WSAECONNABORTED 10053

Software caused connection abort.

An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error.

马QY件原因造成的连接中断,q是什么意思,不跟没说一L么?
google一下呗

Berkeley description:

A connection abort was caused internal to your host machine. The software caused

a connection abort because there is no space on the socket’s queue and the socket

 cannot receive further connections.

       

WinSock description:

Partly the same as Berkeley. The error can occur when the local network system aborts

a connection. This would occur if WinSock aborts an established connection after data

retransmission fails  (receiver never acknowledges data sent on a datastream socket).

       

TCP/IP scenario:

A connection will timeout if the local system doesn’t receive an (ACK)nowledgement for

data sent.  It would also timeout if a (FIN)ish TCP packet is not ACK’d

(and even if the FIN is ACK’d, it will eventually timeout if a FIN is not returned).

 

伯克利说q种q接中断是因为宿L器的内部原因Q因Y件导致的q接中断Q可能是因ؓsocket的队列满q且q个socket不能接收更多的连接了?br /> q还不如不说Q越说越p涂了?br /> winsocket的描qͼgq靠׃些,q种错误一般发生在一个徏立的q接被重发失败的情况下生,接收Ҏ有响应数据发回来。但q是比较模糊?br /> 再看看tcp ip标准文档的说法,如果本地pȝ没有收到发送数据的响应QackQ那么这q接׃时。如果tcp的fin包没有被ackQ或者fin包被ack了但fin没有q回Q那么也会超时。但是,但是Q超时跟q个10053有神马关p?
再看后箋的解释:
从参?中找到如下的描述Q?/span>

The Scenario: 
An HTTP POST is to be sent to an HTTP server.
The server begins reading the POST and notices that the HTTP request header is invalid.
It immediately sends an HTTP response (with an error status, perhaps status=400) and closes the connection without trying to continue reading the remainder of the HTTP request that is forthcoming.

Meanwhile, the client is still happily writing the remainder of the HTTP request to the socket. (Remember a TCP/IP socket connection needs to be closed from both sides. In this case, the server has closed its side, but the client is still pumping data into the half-open connection.)
The client finishes writing the HTTP POST to the socket — meaning that data has been buffered to Winsock. The client application then tries to read the HTTP response, but it cannot because the outgoing retransmission (of the buffered data by WinSock) failed and the socket connection was shutdown on the client side (by Winsock). Even though the HTTP server sent the response, it is lost and cannot be retrieved. The error your application will receive when
trying to read the HTTP response on the socket is WSAECONNABORTED. The word "software" in any of the above error messages refers to "WinSock".

Go back and re-read the original error explanations. Hopefully, after that explanation, you’ll say "Aha! I understand what they’re talking about!".

 

啊哈Q又有http了,大概意思就是http server收到h了,但发现有问题Q那么回一个http错误码,然后关闭了socketQ但与此同时Qclient端还在很开心地向socket写数据,注意哦,tcp是全双工的。client写完毕后Q实际上数据只是攑ֈ了发送方的缓冲区中,不一定已l发出去了,如果写得不好的程序,q个时候就开始从socketL据了Q这时候就会生一个WSACONNECTABORTED错误Qwindows上对应的是10053错误?/span>

但这个解释实际上是不能让人满意的Q只是DZ一U场景,但ؓ什么会产生q没有解释。后面又搜到了个参?Q首先解?0053错误是收到fin后client会放弃发送缓冲区中的数据Q同时上报错误。虽然说法还有点一头雾水?/span>

不过q两个参考给我们一个思\Q重现这个问题?/span>

于是单写个测试用的c-sE序Q大概流E如?/span>

 

 

? CSE序化流E图

q个单程序演C如何出?0053错误Q以?0054错误Q?/span>

如果server在收到client发送的数据后立卛_闭socketQ那么client再读Ӟ会收?0053错误Q如果server收到发送数据后Q立即crashQ那么随后client再读取时会收?0054错误?/span>

okQ能够重现场景了Q那么我们来分析一下更l节的方面,|络问题自然是抓包,本问题处理抓包还要看一下tcp的状态以便辅助分析,我们在client端每ơ操作之前都打印当前的tcp状态?/span>

下面是client端发送记录和对应的netstat情况

? 10053错误client端tcp状态流?/span>

client在发送之前tcp状态是establishedQ在发送之后,server会立卛_闭,tcp状态也变ؓclose_waitQ但q只是单方向的关闭,client可以l箋发数据,但client发送后Qserver立即退ZQ导致后lrecv会失败ƈ且返?0053。对应抓包情况如下:



? 10053错误client端tcp抓包

整个通信q程如下Q?br /> 1-3.三次握手建立q接
4.客户端(10.10.86.93Q向服务器端Q?0.10.86.98Q发送数据,1字节
5.server 中止 发送fin(同时ack之前那个pushQ?br /> 6.client ack 那个fin
7.client再发送两个字?br /> 8.server此时已经关闭socketQ属于非正常情况Q回复复位命?br />
整个q程可以重现10053情况Qtcp发送分l数据的情况也一目了Ӟ事情到此可以了么?昄不是Q你也看C后面q有很多文字Q不知此时你心中的问题是否跟我一P先说我自q吧,通过抓包发现q里的异常关闭有个resetQ但reset一般是10054QConnection reset by peerQ的错误Q那?0053?0054的区别在哪里。要搞清楚问题也不难Q重现场景抓包分析?br /> 以下是修改上面的csE序Q在client发送的1字节包后Q立即crashQ这D的问题是操作pȝ会立卛_收所有资源,包括socket资源?/span>




? 10054错误client端tcp状态流?/span>

可以看到在crash之前q个tcp都是established状态。crash之后Qclient端接收数据时会收?0054错误Q场景重CQ我们再看一下抓包情?/span>



? 10054错误client端tcp抓包

q个抓包情况?0053很像Q?-7也同10053Q在8Ӟclient收到server发过来的resetQ表C当前连接被强制复位了?br /> Ҏ10053?0054可以发现Q如果srvq回fin标志后再reset那么对应的错误就?0053Q如果直接reset是10054错误。回q头来在看参?中的说法也就有点感觉了?br />
ȝ一下:
1.遇到不了解的问题Qgoogle是非常好的方?br /> 2.对于一般问题,重现之很重要Q可以反复发现问题ƈ验证问题。自己写E序或者搭环境量重现?br /> 3.|络问题抓包是利器,包括各种工具的用netstat wireshark ping traceroute{?br /> 4.多重问题Ҏ其中的差异,q里Ҏ10053错误?0054错误?br /> 5.理论基础要搭好,本次问题主要是tcp的异常断开问题Q熟悉tcp断开的半关闭和复位逻辑Q不q理是理论,同样是复位在不同场景下的错误码不同。ƈ且实C也跟具体的操作系l相兟?br />6.实际工作中,
10053错误Ӟ用户主要是处于透明代理情况Q那么这一般是又有用户所在的代理服务器异常关闭导致的Q可能跟我们的离U文件私有协议被用户所在的代理服务器拒l掉D的?/span>

7.回过头来在看一开始的解释Q所谓Y件原因造成的连接终端,是本例子中Qserver端在shoutdown本方向传输时Q立卛_闭了socketQ导致本应该{待Ҏ发送fin来完全结束的正常逻辑被打_~程单方向强制中止本ơtcpQ导致client端之后向上报错,是所谓的10053错误了,q里的Y件就是server端的那个E序。(不过也有U说法是Q客L发送错误数据,Dserver端保护机制而强制关闭)


参考:

  1. http://www.chilkatsoft.com/p/p_299.asp   
  2. http://bbs.csdn.net/topics/360024280#post-361829232
  3. 《TCP/IP详解Q卷一Q?8?TCPq接的徏立和中止

 

 



Long Long Ago 2013-11-28 11:22 发表评论
]]>
libcurl只编译生成支持http协议http://www.aygfsteel.com/pandawang/archive/2013/11/21/406647.htmlLong Long AgoLong Long AgoThu, 21 Nov 2013 12:40:00 GMThttp://www.aygfsteel.com/pandawang/archive/2013/11/21/406647.htmlhttp://www.aygfsteel.com/pandawang/comments/406647.htmlhttp://www.aygfsteel.com/pandawang/archive/2013/11/21/406647.html#Feedback0http://www.aygfsteel.com/pandawang/comments/commentRss/406647.htmlhttp://www.aygfsteel.com/pandawang/services/trackbacks/406647.html下蝲Q如果不需要最新的Q那么只要下载个zip包就好了?br />通过download wizard可以指引你下载不同的版本Q?a >http://curl.haxx.se/dlwiz/
选择source code - q_无关- 扑ֈ最新版本下载,解压~?br />~译比较单有build指o
不过我从vs目录下找C?005版本的vcproj文gQ用q个也可以编译,不过要设|一下include目录?./../../include
 上面是废话了Q关键的怎么值生成对http的支持呢
只要在编译指令中增加定义HTTP_ONLY宏就可以了,p么简单?br />详细说明在这?a >http://curl.haxx.se/docs/install.html

Long Long Ago 2013-11-21 20:40 发表评论
]]>
zz路由器Y仉分的几个概念QCFE、固?Firmware)、NVRAMhttp://www.aygfsteel.com/pandawang/archive/2013/11/13/406310.htmlLong Long AgoLong Long AgoWed, 13 Nov 2013 12:34:00 GMThttp://www.aygfsteel.com/pandawang/archive/2013/11/13/406310.htmlhttp://www.aygfsteel.com/pandawang/comments/406310.htmlhttp://www.aygfsteel.com/pandawang/archive/2013/11/13/406310.html#Feedback0http://www.aygfsteel.com/pandawang/comments/commentRss/406310.htmlhttp://www.aygfsteel.com/pandawang/services/trackbacks/406310.html路由器Y仉分的几个概念QCFE、固?Firmware)、NVRAM
CFE的作用跟PC的BIOS一h负责引导操作pȝ的;Zg是路由器的操作pȝQ就像PC上的Windows一PNVRAM则用于存储\由器的设|,相当于PC的CMOS?br />当\由器插上电后自动q入CFEQCFEq行cMPC的BIOS那样q行自检Q自通过后就引导路由器的Zg了(相当于的PC的Windows了)Q正常情况下最多一分钟路由器的Zg׃引导完毕Qƈ且Power灯是怺的。如果Power灯一闪一闪,那一般是CFE没有引导成功路由器的ZgQ固件不存在、不正确、已损坏{等Q?br />那么我们q_刷固件会把CFE也刷了吗Q呵呵,不会的,像你^时装Windows一P不管你是装XP也好QVista也好QWin7也好Q都不会对你的BIOSq行更新。那我想刷CFE该用什么方法?一般用L路由器原厂的CFE卛_Q如果要玩的深入一些想刷CFEQ那么可以通过JTAG或者telnet方式来刷Q比较危险,而且受固仉Ӟ有些Zg不支持)?br />主要是对g环境q行初始化,image的更斎ͼ加蝲kernel{?/pre>

Long Long Ago 2013-11-13 20:34 发表评论
]]>
回来?/title><link>http://www.aygfsteel.com/pandawang/archive/2010/10/30/336546.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sat, 30 Oct 2010 05:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/pandawang/archive/2010/10/30/336546.html</guid><wfw:comment>http://www.aygfsteel.com/pandawang/comments/336546.html</wfw:comment><comments>http://www.aygfsteel.com/pandawang/archive/2010/10/30/336546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pandawang/comments/commentRss/336546.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pandawang/services/trackbacks/336546.html</trackback:ping><description><![CDATA[好久没有更新q个blog了,java也放下了怹。现在开始重新更新本blog <img src ="http://www.aygfsteel.com/pandawang/aggbug/336546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pandawang/" target="_blank">Long Long Ago</a> 2010-10-30 13:44 <a href="http://www.aygfsteel.com/pandawang/archive/2010/10/30/336546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JXTA学习W记Q?Q——JXTA的各U概?/title><link>http://www.aygfsteel.com/pandawang/archive/2007/05/19/118606.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sat, 19 May 2007 15:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/pandawang/archive/2007/05/19/118606.html</guid><wfw:comment>http://www.aygfsteel.com/pandawang/comments/118606.html</wfw:comment><comments>http://www.aygfsteel.com/pandawang/archive/2007/05/19/118606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pandawang/comments/commentRss/118606.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pandawang/services/trackbacks/118606.html</trackback:ping><description><![CDATA[本文主要介绍了JXTA中的各种概念?br>1.<span style="font-weight: bold;">Peer?/span>一个peer是实现了一个或多个JXTA协议的网l设备。比如传感器Q电话, PDAQPCQ服务器Q巨型机{等。每一个peer与其他peer都是独立操作q且是异步的。有peer ID来唯一标识一个peer。peer使用JXTA协议公开一个或多个|络接口Qnetwork interfaceQ,每一个公开的接口都被广告ؓ一个peer端点(peer endpoint),q个peer端点唯一标识了一个网l接口。peer之间不需要有直接的点对点的网l连接。可以用中间的peer作ؓpeer的消息\由,由于硬件网l或者网l配|(NATsQ防火墙或者代理)而造成的两个通信peerq行互联。peer通常被设计成|络中自然地互相发现Q从而构成暂时的或持久的关系成ؓpeerl(peer gorupQ?br>2.<span style="font-weight: bold;">Peer Group</span>.一个peerl是一个peer的集合,q些peer都有一l相同的服务。peer自组l的加入到peerl中Qƈ通过一个唯一的peerlid来区别这些peerl。每一个peerl都可以建立一个属于自qmemebership policyQ从M人可以加入到最严格的安全验证以及受保护方式Q需要完全的认证书来加入Q。一个peer可以同时属于多于一个peerl。默认地Q第一个peerl被实例的组是Net Peer Group。所有的peer都属于Net Peer Group。peer可以选择加入其他的peer group。JXTA协议描述了peer如何公开Q发玎ͼ加入以及监控peerl?br>     如下几点说明了创建peerl的目的?br> <ol> <li>建立安全的环境。peerl可以创Z个本地控制域Q在q个域中使用一个特定的安全{略。这个安全策略可以简单的只是一个明文的帐号 /口o交换Q也可以像PKI一h熟。peerl界定认证的成员讉K和公开受保护的内容QcontentQ。peerl在建立了一个逻辑上的区域Q从而对讉Kpeerl的资源q行界定?/li> <li>创徏一个范围环境。peerl裕兴徏立一个本地的专用域。比如,peer可以l织h实现一个文档共享网l或者一个CPU׃n|络?peerl提供细分网l成抽象的区域来提供内在范围机制Qimplicit scoping mechanismQ。比如,当搜索一个组内容的时Qpeerl可以界定定义一个搜索范围?/li> <li>创徏一个监视环境。peerl允怸个peerZM目的ȝ视一lpeerQ比如,心蟩Qtraffic introspection或者accountabilityQ。peerl也可以构徏一个父子层ơ结构,其中M一个组都有一个唯一的父二Ӏ查询请求能偶在q个l中传播。对于这个组中的q告也可以在其父l中公开Q当然也包裹q个l本w?/li> </ol> peerl提供了一l服务成为peerl服务。在JXTA中敌营了一个核心peerl服务集合。两个peer如果要通过一个服务进行交互,他们配需位于同一个peer中?br>    核心的组服务有如下:<br> <ol> <li>发现服务QDiscovery ServiceQ。本服务被组中的peer用来查询perl资源,比如peerQpeerl,通道和服务等?/li> <li>成员关系服务QMembership ServiceQ。本服务被当前成员用来拒l或接受一个新的组成员应用。一个peer惌加入C个group前,首先要确定一个当前的成员Qƈh加入。当前成员的集合可以拒绝或者接受某个想加入的应用(applicationQ。本服务可能会发起一个所有peer或者指定组代表的一ơ投来军_是否接受或者聚居新的成员应用?/li> <li>讉K服务QAccess ServiceQ。用访问服务可以用来验证一个peer对另一个peer的请求(requestQ。如果访问被允许Q那么接受请求的peer会提供给hpeer关于该请求所要知道的信息的信d相关信息。(注意Q在peerl中Q不是所有的行ؓQactionQ都需要通过讉K服务的检查,只有那些在某些peer中被限制的行为在需要调用时Q才被检查。)</li> <li>道服务QPipe ServiceQ。本服务用于在peerl成员间的链接管道的建立和管理?/li> <li>Resolver服务。本服务用来发送一般的查询h到其他的peer。peer可以定义和交换请求以便发CQ何需要的信息Q比如一个服务的状态或者一个管道端点的信息。)</li> <li>监视服务(Monitoring Service)。本服务用来让一个peer监视本组中的其他成员服务?/li> </ol>     不是所有上面提到的服务都必要被每个peer实现。一个peerl可以自q实现那些它认为有用的服务Qƈ可以依赖于默认的Net Peer Group来提供非关键核心服务的一般实现?br>3.<span style="font-weight: bold;">Network Services</span>。peer之间可以协作q信以发布,发现和启动网l服务。peer可以发布多个服务。peer通过Peer Discovery Protocol来发现network service。在JXTA协议中组l了两个层次上的network service?br> <ul> <li>Peer Service。一个peer service只有当peer公布了自qservice时才能被讉K。如果这个peerp|了,那么它的service也失败了。不同的peer可以q行某个服务的多个实例,但每个实例都必须公开自己的广?advertisement).</li> <li>Peer Group Service。peerl服务是q个l中成员所q行服务的实例的集合的组lŞ式,其中q些实例是互相合作的。如果其中Q何一个peerp|了,那么q个 peerl服务将不会收到影响Q假定这个服务可以从其他peer获得Q。peer group服务通过peer l广告的以部分来发布?/li> </ul>     服务可以是事先被安装到peer上或者通过|络安装的。ؓ了真正的q行一个服务,peer必须为定位一个适合当前peerq行环境的一个实现。这个从|络上查找,下蝲和安装一个服务的q程很类g在Internet上搜索一个Web面Q取回这个页面然后再安装需要的插g的过E?br> 4.<span style="font-weight: bold;">Modules</span>。JXTA的module用来描述M一D는来实现JXTA world中一个行为的“代码”的抽象表C(AbstractionQ。Network Service是在一个peer上实现的行ؓ的一个最一般的例子。这个Module Abstraction不一定特指什?#8220;代码”Q它可以是一个Javac,也可以是Java jarQ或者动态链接库dllQ一个XML消息或是一个脚本。这个module的行Zl了module的实现者。对于一个实例(instanceQ, module表示了一个网l服务(network serviceQ在不同q_上的不同实现Q这些^台比如说在javaq_QMS windowsq_QSolaris q_?br>    Module允许peer实现一个新的行为,通过提供了一个一般的抽象。当peer览或者加入一个peerl时Q他可以查找新的其打实现的行ؓ。比如,当加入一个peerl后Q一个peer可能必须学习新的搜烦服务Q这个服务只能在本peerl中使用。ؓ了加入到q个l,q个peer必须实现q个新的搜烦服务。这个module框架可以启动q_无关行ؓ的表C(representationQ和q告QadvertisementQ。ƈ允许peer描述和实CQ何Ş式这个行为(behaviorQ的是实现。比如,一个peer使用java或者c实现一个行为的实现?br>& amp; nbsp;   描述和公告一个^台独立的行ؓ的能力能有有效的支持peerl包含异构的peer。module的广告可以JXTA的peer能够采用q_独立的方式描qC个行为。JXTAq_使用moduleq告来自描述?br>    module抽象QModule abstractIonQ包括一个module classQmodule specification和一个moduleimplementation?br> <ul> <li>Module Class。module class主要用于q告一个行为(behaviorQ的存在。这个class的定义表qC一个期望的行ؓ和一个期望的Ҏ支持的module的绑定。每一个module class都有一个唯一的IDQ成为MoudleClassID</li> <li>Module Specification。Module Specification主要用于讉Kq个module。它包含了访问或者启动这个module的所有必要的信息。比如,一个服务,他的module specification可能包含了一个用于和其他服务盔R信的管道的q告。一个module specification用于提供module class所指明的功能。对于一个module class可能有多个module specification。每一个module specification都有一个唯一的idQModuleSpecID。ModuleSpecID包含了ModuleClass IDQƈ指明了所使用的module class。一个module specification暗含了对|络的兼Ҏ。对于一个给定的module specification的所有实现都必须使用相同的协议,q些实现都需要是兼容的,即使用不同的语a实现的?/li> <li>Module Implementation。Module Implement是一l定module specification的实现。对于一个module specification可以有多个module implementation。每一个module implementation都包含了它所实现的与specification相关联的ModuleSpecID?/li> </ul>     Module可以被peerl服务用,也可以被独立的服务所使用。JXTA服务通过module abstraction来区别存在的服务Q他的Module ClassQ,服务的specificationQModule SpecificationQ,或者服务的实现QService ImplementationQ。所有的q些都有一个联合的q告Qƈ且可以通过其他JXTA peer来公告和发现的。作Z个例子,考虑JXTA的发现服务。它包含一个唯一的ModuleClassIDQ标识了他作Z个发现服务——他的抽象功能。对于这个发现服务可以有多个不同的规范(SpecificationQ,q伴随着不同的实现。对于组的大和在网l中的传播方式可以用不同的裁剪{略。每一个Specification都有唯一的MdouleSpecIDQ其中指明了发现发现服务的ModuleClassID。对于每个规范,都可能有多种实现Q每U实现都包含了相同的ModuleSpceID?br>    MQ对于一个给定的module Class都可能有多种规范Q这些规范可能是完全不同的。然而Q何给定规范的所有实现都是假定可以互相兼容的?br><img src ="http://www.aygfsteel.com/pandawang/aggbug/118606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pandawang/" target="_blank">Long Long Ago</a> 2007-05-19 23:11 <a href="http://www.aygfsteel.com/pandawang/archive/2007/05/19/118606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFace的作为Java Application使用http://www.aygfsteel.com/pandawang/archive/2007/05/17/118079.htmlLong Long AgoLong Long AgoThu, 17 May 2007 06:33:00 GMThttp://www.aygfsteel.com/pandawang/archive/2007/05/17/118079.htmlhttp://www.aygfsteel.com/pandawang/comments/118079.htmlhttp://www.aygfsteel.com/pandawang/archive/2007/05/17/118079.html#Feedback2http://www.aygfsteel.com/pandawang/comments/commentRss/118079.htmlhttp://www.aygfsteel.com/pandawang/services/trackbacks/118079.htmlException in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IStatus 错误Q虽然已l添加了org.eclipse.jface,org.eclipse.core.runtime,org.eclipse.osgi包,但仍然出错,后来发现org.eclipse.core.runtime.IStatus是在org.eclipse.equonix.common包中Q添加后发现 Q还需要添加org.eclipse.core.command包,再添加后搞定?br>

Long Long Ago 2007-05-17 14:33 发表评论
]]>
SWT中的模式和非模式船体Qmodal or non-modalQ?/title><link>http://www.aygfsteel.com/pandawang/archive/2007/05/17/118075.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Thu, 17 May 2007 06:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/pandawang/archive/2007/05/17/118075.html</guid><wfw:comment>http://www.aygfsteel.com/pandawang/comments/118075.html</wfw:comment><comments>http://www.aygfsteel.com/pandawang/archive/2007/05/17/118075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pandawang/comments/commentRss/118075.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pandawang/services/trackbacks/118075.html</trackback:ping><description><![CDATA[    以前实现SWT中的模式和非模式H体Qmodal or non-modal window )是通过在子H体中是否截取父H体的消息@环来实现的,现在发现q样好像不行了,但可以通过指定子窗体的样式QstyleQ来制定子窗体是否是模式H体?br>Shell child = new Shell(shell,SWT.SHELL_TRIM|SWT.APPLICATION_MODAL); <br>上面的语句指定了子窗体child为模式窗体。在上面的style中指定SWT.SHELL_TRIM 是ؓ了显C窗体的三个默认按钮Q最大,最和关闭Q,也可以用SWT.DIALOG_TRIMQ不q此时ؓ对话框样式,只有一个默认按钮(关闭Q。默认的Shell是非模式H体Qƈ且是有默认系l按钮的Q即样式为:SWT.SHELL_TRIM|SWT.MODELESS?br>Z说一下,在JFace的Dialog中用模式对话框只要单的讄该对话框setBlockOnOpen(true)卛_?strong><a name="exdialog"></a> <img src ="http://www.aygfsteel.com/pandawang/aggbug/118075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pandawang/" target="_blank">Long Long Ago</a> 2007-05-17 14:27 <a href="http://www.aygfsteel.com/pandawang/archive/2007/05/17/118075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JXTA学习W记Q?Q——JXTA的体pȝ?/title><link>http://www.aygfsteel.com/pandawang/archive/2007/05/13/117108.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sun, 13 May 2007 06:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/pandawang/archive/2007/05/13/117108.html</guid><wfw:comment>http://www.aygfsteel.com/pandawang/comments/117108.html</wfw:comment><comments>http://www.aygfsteel.com/pandawang/archive/2007/05/13/117108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pandawang/comments/commentRss/117108.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pandawang/services/trackbacks/117108.html</trackback:ping><description><![CDATA[    在JXTA中分Z个层ơ,如下图所C?br><img style="width: 482px; height: 339px;" alt="" src="http://www.aygfsteel.com/images/blogjava_net/pandawang/JXTA/JxtaArchitecture.JPG" align="middle"><br>     下面分别介绍各个层次Q?br> <ol> <li>q_层(platform layerQ。^台层x谓的JXTA核心QJXTA coreQ,专门包装了最最_֍的部分,q部分主要完成了对P2P|络最一般的使用。包括,为P2P应用E序的关键机制构建模块,传输Q包括防火墙IK)Q创建peer和peer group以及和安全部分的l合?/li> <li>服务层(Service layerQ。服务层包含了一些网l服务,q些服务不一定是P2PE序中必ȝQ但却是P2P环境中通常和值得提供的。比如搜索,索引Q目录,存储pȝQ文件共享,分布式文件系l,资源聚合和租借等应用服务Q以及协议传输服务和认证和PKI服务{等?/li> <li>应用层(Application layerQ。应用层包括了综合应用的实现Q比如P2P的及时消息,文档和资源的׃nQ娱乐内容管理和分发QP2P的emailpȝQ分布式拍卖pȝ以及很多其他的应用?/li> </ol>     实际上,服务层和应用层之间的界限q不是明昄。一个用L应用E序可以作ؓ另一个用L服务。整个系l被实际成模块化的,允许开发者选择一个服务和应用的集合来定制自己的需求?br>    在JXTA中有三个主要斚w是它区别一其他分布式网l模型的Q?br> <ol> <li>使用XML文档(q告Q来描述|络资源?/li> <li>针对peer间和peer与端点(endpointQ间的抽象管道(abstraction pipe)不需要用一个可信赖的中心名?地址认真Q比如DNS?/li> <li>唯一的peer地址ҎQpeer IDsQ?/li> </ol> 在下面的部分详l介lJXTA的各个组成部分?br><img src ="http://www.aygfsteel.com/pandawang/aggbug/117108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pandawang/" target="_blank">Long Long Ago</a> 2007-05-13 14:13 <a href="http://www.aygfsteel.com/pandawang/archive/2007/05/13/117108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JXTA学习W记Q?Q——JXTA?/title><link>http://www.aygfsteel.com/pandawang/archive/2007/05/12/117072.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sat, 12 May 2007 15:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/pandawang/archive/2007/05/12/117072.html</guid><wfw:comment>http://www.aygfsteel.com/pandawang/comments/117072.html</wfw:comment><comments>http://www.aygfsteel.com/pandawang/archive/2007/05/12/117072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pandawang/comments/commentRss/117072.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pandawang/services/trackbacks/117072.html</trackback:ping><description><![CDATA[    JXTA是一个ؓP2P计算而开发设计的开发网路计^台。它的目标是通过创徏基本lg和服务来为peer group创造新的应用。JXTA是juxtpose的简Uͼ指ƈ列ƈ排,q里是说P2P的方式和C/S方式以及B/S方式是同{地位了Q都是传l的分布式计模型?nbsp;JXTA为开发应用程序提供了一l开发协议集合和一个开放源码的参考实现。JXTA协议标准化了peer的风| <ol> <li>互相发现Q?/li> <li>在peer group中的自组l;</li> <li>q告和发现网l服务;</li> <li>peer间的通讯Q?/li> <li>peer间的交互?/li> </ol>     JXTA协议被设计成独立于程序设计语a和独立于传输协议的。这些协议可以用Java或者C/C++或者perl实现。同P也能在TCP/IP,HTTP,Bluetooth或者其他传输协议上实现。JXTA协议使得开发者可以构建和部vP2P的服务或者应用程序,因ؓq些协议是独立于E序语言和传输协议,所以可以得采用完全不同Y件体pȝ异构l端讑֤能够交互通讯。用JXTA技术,开发h员可以开发出Z|络的,能够交互的应用程序,q些应用E序有如下特点: <ol> <li>通过动态查询和防火墙穿来发现本网l中的其他peerQ?/li> <li>M讉K|络的节炚w可以方便地共享文档;</li> <li>在网l站点中查找minute contentQ?/li> <li>创徏一个peer group来提供服务;</li> <li>q端监视peer的行为;</li> <li>在网l中同其他peerq行安全的通信?/li> </ol><img src ="http://www.aygfsteel.com/pandawang/aggbug/117072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pandawang/" target="_blank">Long Long Ago</a> 2007-05-12 23:59 <a href="http://www.aygfsteel.com/pandawang/archive/2007/05/12/117072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>erlang和yawshttp://www.aygfsteel.com/pandawang/archive/2007/01/18/94774.htmlLong Long AgoLong Long AgoThu, 18 Jan 2007 15:22:00 GMThttp://www.aygfsteel.com/pandawang/archive/2007/01/18/94774.htmlhttp://www.aygfsteel.com/pandawang/comments/94774.htmlhttp://www.aygfsteel.com/pandawang/archive/2007/01/18/94774.html#Feedback2http://www.aygfsteel.com/pandawang/comments/commentRss/94774.htmlhttp://www.aygfsteel.com/pandawang/services/trackbacks/94774.htmlhttp://yarivsblog.com/articles/2006/07/12/the-hitchhiker
首先需要安装erlang环境Qwindows和linux下都有,但yaws好像只给了个linux下的安装文gQ于是在ubuntu6.06上安装?br />从erlang主页www.erlang.org上下载源码,~译步骤Q?br />tar -xzvf xxx.tar.gz
cd xxx
sudo ./configure
Qsudo make cleanQ#可选的Q用于非首次~译的情?br />sudo make
sudo make install Qas rootQ?br />但configure时出错:Q类似如下)
configure: error: No curseslibraryfunctions found
There is a problem with $ERL_TOP/erts/configure not passing the LDFLAGS
environment variable for test compiles, so ALL library tests fail. I
modified files $ERL_TOP/erts/aclocal.m4 and $ERL_TOP/configure.in in order
to locate pthread_create in the standard C runtime library. The
$ERL_TOP/configure.in produces a configure that works, wheras the
$ERL_TOP/erts/configure.in does not. At the top of file erts/configure.in:

AC_PREREQ(2.13)
AC_INIT(vsn.mk)
应该是一些curses库没有安装,但apt-get install curses提示找不刎ͼgoogle了一下发现需要安?br />
ncurses-devel包,在网上只扑ֈ了相应的rpm包,使用alien命oQ将rpm保{换ؓdeb包安装:
sudo apt-get install alien
sudo alien *.rpm,转成deb后,用dpkg -i *.deb
或?br />sudo alien -i *.rpm
q行安装
(注意Q下载rpm包的时候我包改名了,Dalien时出错,Ҏ原来的名字就正常了,不知道ؓ什么:P)
q时候cofigure可以q去了,但make又出错了Q提Cerlc找不刎ͼcM如下的错误信息:
erlc -W +debug_info -I../include -o../ebin otp_ring0.erl
make[4]: erlc: Command not found
make[4]: ***[../ebin/otp_ring0.beam]Error127
make[4]: Leaving directory `/usr/src/packages/erlang-10.b.5/lib/kernel/src'
make[3]: *** [/usr/src/packages/erlang-10.b.5/lib/kernel/ebin/otp_ring0.beam] Error 2
make[3]: Leaving directory `/usr/src/packages/erlang-10.b.5/erts/emulator'
make[2]: *** [generate] Error 2
make[2]: Leaving directory `/usr/src/packages/erlang-10.b.5/erts/emulator'
make[1]: *** [depend] Error 2
make[1]: Leaving directory `/usr/src/packages/erlang-10.b.5'
make: *** [build-stamp] Error 2
make: *** [debs] Error 2

看网上有介绍说用make cleanq不完全Q?br />于是源码删除,重新解压~,再configure后,makeQ没有提Cerlc找不CQ又有提C类似如下的错误信息Q?br />> otp_src_R11B-1/lib/kernel/ebin/erlang.beam > i686-pc-linux-gnu/preload.c
> m4 -DTARGET=i686-pc-linux-gnu -DOPSYS=linux -DARCH=x86 hipe/
> hipe_x86_asm.m4 > i686-pc-linux-gnu/opt/plain/hipe_x86_asm.h
> /bin/sh: m4: command not found
> make[2]: *** [i686-pc-linux-gnu/opt/plain/hipe_x86_asm.h] Error 127
> make[2]: Leaving directory `/home/jhancock/otp_src_R11B-1/erts/emulator'
> make[1]: *** [generate] Error 2
> make[1]: Leaving directory `/home/jhancock/otp_src_R11B-1/erts/emulator'
> make: *** [depend] Error 2
q是m4包没有找刎ͼhttp://www.erlang.org/pipermail/erlang-questions/2006-November/023942.htmlQ?br />安装m4包后Qlmake出现如下错误Q?br />hipe/hipe_mkliterals.c:351: error: 'X86_LEAF_WORDS' undeclared here (not in a function)
hipe/hipe_mkliterals.c:352: error: 'X86_NR_ARG_REGS' undeclared here (not in a function)
|上搜烦l果Qhttp://forum.trapexit.org/viewtopic.php?t=6815
源码删除,再解压羃 再makel于q去?/pre>提示Q如下的包最好是在erlang安装之前安装好? perl, debhelper (>= 4.0.0), autoconf (>= 2.50), openssl, libssl-dev, m4, libncurses5-dev, dpatch, autotools-dev, unixodbc-dev
makeq程大概?个小Ӟ之后是make install很快?br />打开l端Q输入erlQ出现提C符1>
后面yaws的安装和使用
yaws的安装挺单的Q主要是他的~译是基于erlang的?br />需要注意的是,安装好后Q如果没有安装相应的ssl模块的话Q需要更改一下conf文gQ将其中关于ssl的部分注释掉Q既如下部分Q?br /><server xxx>
      ....
          <ssl>
                ...
          </ssl>
</server>
在windows下的安装Q在yaws的主上有说明,需要下载一个bat文gQ不q这个文件好像有问题Q需要将一些安装的环境变量改一下,在(SET ERLC_FLAGS=Q这行之后添加:
SET ProgramFiles=G:\erlang\yaws\yaws_program
SET HOME=G:\erlang\yaws\yaws_data
SET APPDATA=G:\erlang\yaws\yaws_configure
ProgramFiles 为yaws的程序位|,HOME为yaws的数据位|,包括wwwQlogQwikiQssl{,APPDATA为yaws的配|位|?br />如果使用默认安装参数的话Q需要将IF NOT DEFINED ProgramFiles SET ProgramFiles="c:\Program Files"?br />HOME="%HOMEDRIVE%%HOMEPATH%\My Documents"中的双引号去掉(感觉q个bat文g写的比较乱)
同时不要忘了Q在安装好之后注释掉conf文g中关于ssl的部分?br />安装好后Q默认就可以?home/www目录或?tmpQwindows下ؓ%home%\www  or C:\tmpQ目录添加yaws文gQehtmlQ来昄了?br />btwQ如果在ubuntu or debian上安装,最单,只要apt-get install yaws 可以了。运行yaws需要root权限?br />

Long Long Ago 2007-01-18 23:22 发表评论
]]> վ֩ģ壺 | ־| | ƶ| | | | | | Դ| ̨| ̫| ͨɽ| | | | | ̫| | ¹| ˮ| | | ÷ӿ| γ| | ˮ| | Ϻӿ| | | °Ͷ| | տ| Դ| ƽ˳| Ϋ| | | | |