WSAGetLastErrorå¯èƒ½ä¼?x¨¬)è¿”å?/span>10053错误åQŒæŸ¥msdn的解释是åQ?/span>
WSAECONNABORTED 10053
¼œžé©¬åQŸèÊYä»¶åŽŸå› é€ æˆçš„è¿žæŽ¥ä¸æ–,˜q™æ˜¯ä»€ä¹ˆæ„æ€ï¼Œä¸è·Ÿæ²¡è¯´ä¸€æ ïL(f¨¥ng)š„么? 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Œå¯èƒ½æ˜¯å› 䨓(f¨´)socket的队列满òq¶ä¸”˜q™ä¸ªsocketä¸èƒ½æŽ¥æ”¶æ›´å¤šçš„连接了(ji¨£n)ã€?br /> ˜q™è¿˜ä¸å¦‚ä¸è¯´åQŒè¶Šè¯´è¶Š¾pŠæ¶‚äº?ji¨£n)ã€?br /> winsocketçš„æ˜qŽÍ¼Œä¼ég¹Ž˜q˜é è°×ƒ¸€äº›ï¼Œ˜q™ç§é”™è¯¯ä¸€èˆ¬å‘生在一个å¾ç«‹çš„˜qžæŽ¥è¢«é‡å‘失败的情况下äñ”生,接收æ–ÒŽ(gu¨©)²¡æœ‰å“应数æ®å‘回æ¥ã€‚但˜q˜æ˜¯æ¯”较模糊ã€?br /> å†çœ‹çœ‹tcp ipæ ‡å‡†æ–‡æ¡£çš„è¯´æ³•ï¼Œå¦‚æžœæœ¬åœ°¾pÈ»Ÿæ²¡æœ‰æ”¶åˆ°å‘逿•°æ®çš„å“应åQˆackåQ‰é‚£ä¹ˆè¿™˜qžæŽ¥ž®×ƒ¼š(x¨¬)‘…时。如果tcpçš„fin包没有被ackåQˆæˆ–者f(xi¨¦)in包被ackäº?ji¨£n)但fin没有˜q”回åQ‰é‚£ä¹ˆä¹Ÿä¼?x¨¬)超时。但是,但是åQŒè¶…æ—¶è·Ÿ˜q™ä¸ª10053有神马关¾p»ï¼Ÿ The Scenario: 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.) 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äº?ji¨£n)ï¼Œå¤§æ¦‚æ„æ€å°±æ˜¯http server收到è¯äh±‚äº?ji¨£n),但å‘现有问题åQŒé‚£ä¹ˆå›žä¸€ä¸ªhttp错误ç ,然厞®±å…³é—了(ji¨£n)socketåQŒä½†ä¸Žæ¤åŒæ—¶åQŒclient端还在很开å¿?j¨©)地å‘socket写数æ®ï¼Œæ³¨æ„哦,tcp是全åŒå·¥çš„。client写完毕åŽåQŒå®žé™…上数æ®åªæ˜¯æ”‘Öˆ°äº?ji¨£n)å‘逿–¹çš„缓冲区ä¸ï¼Œä¸ä¸€å®šå·²¾lå‘出去äº?ji¨£n),如果写得ä¸å¥½çš„程åºï¼Œ˜q™ä¸ªæ—¶å€™å°±å¼€å§‹ä»Žsocketè¯ÀL•°æ®äº†(ji¨£n)åQŒè¿™æ—¶å€™å°±ä¼?x¨¬)äñ”生一个WSACONNECTABORTED错误åQŒwindows上对应的ž®±æ˜¯10053错误ã€?/span> 但这个解释实际上是ä¸èƒ½è®©äººæ»¡æ„çš„åQŒåªæ˜¯ä‹Då‡ÞZº†(ji¨£n)一¿Uåœºæ™¯ï¼Œä½†äØ“(f¨´)什么会(x¨¬)产生˜q˜æ²¡æœ‰è§£é‡Šã€‚åŽé¢åˆæœåˆ°äº?ji¨£n)个å‚è€?åQŒé¦–先解é‡?0053错误是收到finåŽclientä¼?x¨¬)放弃å‘é€ç¼“冲区ä¸çš„æ•°æ®åQŒåŒæ—¶ä¸ŠæŠ¥é”™è¯¯ã€‚虽然说法还有点一头雾水ã€?/span> ä¸è¿‡˜q™ä¸¤ä¸ªå‚考给我们一个æ€èµ\åQŒé‡çŽ°è¿™ä¸ªé—®é¢˜ã€?/span> 于是½Ž€å•写个测试用的c-s½E‹åºåQŒå¤§æ¦‚æµ½E‹å¦‚ä¸?/span>
å›? CS½E‹åº½Ž€åŒ–æµ½E‹å›¾ ˜q™ä¸ª½Ž€å•ç¨‹åºæ¼”½Cºå¦‚何出çŽ?0053错误åQˆä»¥å?0054错误åQ‰ã€?/span> 如果server在收到clientå‘é€çš„æ•°æ®åŽç«‹å›_…³é—socketåQŒé‚£ä¹ˆclientå†è¯»æ—Óž¼Œä¼?x¨¬)æ”¶å?0053错误åQ›å¦‚æžœserver收到å‘逿•°æ®åŽåQŒç«‹å³crashåQŒé‚£ä¹ˆéšåŽclientå†è¯»å–æ—¶ä¼?x¨¬)æ”¶å?0054错误ã€?/span> okåQŒèƒ½å¤Ÿé‡çŽ°åœºæ™¯äº†(ji¨£n)åQŒé‚£ä¹ˆæˆ‘们æ¥åˆ†æžä¸€ä¸‹æ›´¾l†èŠ‚çš„æ–¹é¢ï¼Œ¾|‘ç»œé—®é¢˜è‡ªç„¶æ˜¯æŠ“åŒ…ï¼Œæœ¬é—®é¢˜å¤„ç†æŠ“åŒ…è¿˜è¦çœ‹ä¸€ä¸‹tcp的状æ€ä»¥ä¾¿è¾…助分æžï¼Œæˆ‘们在client端毋ơæ“作之å‰éƒ½æ‰“å°å½“å‰çš„tcp状æ€ã€?/span> 䏋颿˜¯client端å‘é€è®°å½•和对应的netstat情况
client在å‘é€ä¹‹å‰tcpçŠ¶æ€æ˜¯establishedåQŒåœ¨å‘é€ä¹‹åŽï¼Œserverä¼?x¨¬)ç«‹å›_…³é—,tcp状æ€ä¹Ÿå˜äØ“(f¨´)close_waitåQŒä½†˜q™åªæ˜¯å•æ–¹å‘的关é—,clientå¯ä»¥¾l§ç®‹å‘æ•°æ®ï¼Œä½†clientå‘é€åŽåQŒserverç«‹å³é€€å‡ÞZº†(ji¨£n)åQŒå¯¼è‡´å޾lrecvä¼?x¨¬)å¤±è´¥åÆˆä¸”è¿”å?0053。对应抓包情况如下:(x¨¬) å›? 10053错误client端tcp抓包 整个通信˜q‡ç¨‹å¦‚下åQ?br /> 1-3.ä¸‰æ¬¡æ¡æ‰‹å»ºç«‹˜qžæŽ¥
å›? 10054错误client端tcpçŠ¶æ€æµè½?/span> å¯ä»¥çœ‹åˆ°åœ¨crash之剘q™ä¸ªtcp都是established状æ€ã€‚crash之åŽåQŒclientç«¯æŽ¥æ”¶æ•°æ®æ—¶ä¼?x¨¬)æ”¶å?0054错误åQŒåœºæ™¯é‡çŽîCº†(ji¨£n)åQŒæˆ‘们å†çœ‹ä¸€ä¸‹æŠ“包情å†?/span> å›? 10054错误client端tcp抓包 ˜q™ä¸ªæŠ“包情况è·?0053很åƒåQ?-7也åŒ10053åQŒåœ¨8æ—Óž¼Œclient收到serverå‘过æ¥çš„resetåQŒè¡¨½Cºå½“å‰è¿žæŽ¥è¢«å¼ºåˆ¶å¤ä½äº?ji¨£n)ã€?br /> å¯ÒŽ(gu¨©)¯”10053å’?0054å¯ä»¥å‘现åQŒå¦‚æžœsrv˜q”回finæ ‡å¿—åŽå†reset那么对应的错误就æ˜?0053åQŒå¦‚果直接resetž®±æ˜¯10054错误。回˜q‡å¤´æ¥åœ¨çœ‹å‚è€?ä¸çš„说法也就有点感觉äº?ji¨£n)ã€?br /> 7.回过头æ¥åœ¨çœ‹ä¸€å¼€å§‹çš„解释åQŒæ‰€è°“èÊYä»¶åŽŸå› é€ æˆçš„连接终端,ž®±æ˜¯æœ¬ä¾‹åä¸åQŒserver端在shoutdown本方å‘ä¼ è¾“æ—¶åQŒç«‹å›_…³é—了(ji¨£n)socketåQŒå¯¼è‡´æœ¬åº”该½{‰å¾…å¯ÒŽ(gu¨©)–¹å‘é€finæ¥å®Œå…¨ç»“æŸçš„æ£å¸¸é€»è¾‘è¢«æ‰“ç ß_(d¨¢)¼Œ¾~–ç¨‹å•æ–¹å‘å¼ºåˆ¶ä¸æ¢æœ¬‹Æ¡tcpåQŒå¯¼è‡´client端之åŽå‘上报错,ž®±æ˜¯æ‰€è°“çš„10053错误äº?ji¨£n),˜q™é‡Œçš„èÊY件就是server端的那个½E‹åºã€‚(ä¸è¿‡ä¹Ÿæœ‰¿U说法是åQŒå®¢æˆïL(f¨¥ng)«¯å‘é€é”™è¯¯æ•°æ®ï¼Œå¯ÆD‡´serverç«¯ä¿æŠ¤æœºåˆ¶è€Œå¼ºåˆ¶å…³é—)(j¨ª)
| |
|
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äº?ji¨£n)一下å‘现需è¦å®‰è£?br />ncurses-develåŒ…ï¼Œåœ¨ç½‘ä¸Šåªæ‰‘Öˆ°äº?ji¨£n)相应的rpm包,使用alien命ä×o(h¨´)åQŒå°†rpmä¿è{æ¢äØ“(f¨´)deb包安装:(x¨¬)
sudo apt-get install alien
sudo alien *.rpm,转æˆdebåŽï¼Œç”¨dpkg -i *.deb
或�br />sudo alien -i *.rpm
˜q›è¡Œå®‰è£…
(注æ„åQŒä¸‹è½½rpm包的时候我ž®†åŒ…改åäº?ji¨£n)ï¼Œå¯ÆD‡´alien时出错,æ”ÒŽ(gu¨©)ˆåŽŸæ¥çš„åå—å°±æ£å¸¸äº?ji¨£n),ä¸çŸ¥é“äØ?f¨´)什么:(x¨¬)P)
˜q™æ—¶å€™cofigureå¯ä»¥˜q‡åŽ»äº?ji¨£n),但makeåˆå‡ºé”™äº†(ji¨£n)åQŒæ½Cºerlc找ä¸åˆŽÍ¼Œ¾cÖM¼¼å¦‚下的错误信æ¯ï¼š(x¨¬)
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 cleanòq¶ä¸å®Œå…¨åQ?br />于是ž®†æºç åˆ é™¤ï¼Œé‡æ–°è§£åŽ‹¾~©ï¼Œå†configureåŽï¼ŒmakeåQŒæ²¡æœ‰æ½Cºerlc找ä¸åˆîCº†(ji¨£n)åQŒåˆæœ‰æ½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.htmlåQ?br />安装m4包åŽåQŒç‘ô¾lmake出现如下错误å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)
¾|‘上æœçƒ¦(ch¨³)¾l“æžœåQšhttp://forum.trapexit.org/viewtopic.php?t=6815
ž®†æºç åˆ é™¤ï¼Œå†è§£åŽ‹ç¾ƒ å†make¾lˆäºŽ˜q‡åŽ»äº?/pre>æç¤ºåQšå¦‚下的包最好是在erlang安装之剞®±å®‰è£…好çš? perl, debhelper (>= 4.0.0), autoconf (>= 2.50), openssl, libssl-dev, m4, libncurses5-dev, dpatch, autotools-dev, unixodbc-dev
make˜q‡ç¨‹å¤§æ¦‚æœ?ä¸ªå°æ—Óž¼Œä¹‹åŽæ˜¯make install很快ã€?br />打开¾lˆç«¯åQŒè¾“å…¥erlåQŒå‡ºçްæ½Cºç¬¦1>
åŽé¢ž®†yaws的安装和使用
yaws的安装挺½Ž€å•çš„åQŒä¸»è¦æ˜¯ä»–çš„¾~–译是基于erlangçš„ã€?br />éœ€è¦æ³¨æ„的是,安装好åŽåQŒå¦‚果没有安装相应的ssl模å—çš„è¯åQŒéœ€è¦æ›´æ”¹ä¸€ä¸‹confæ–‡äšgåQŒå°†å…¶ä¸å…³äºŽssl的部分注释掉åQŒæ—¢å¦‚下部分åQ?br /><server xxx>
     ....
       <ssl>
           ...
       </ssl>
</server>
在windows下的安装åQŒåœ¨yaws的主™åµä¸Šæœ‰è¯´æ˜Žï¼Œéœ€è¦ä¸‹è½½ä¸€ä¸ªbatæ–‡äšgåQŒä¸˜q‡è¿™ä¸ªæ–‡ä»¶å¥½åƒæœ‰é—®é¢˜åQŒéœ€è¦å°†ä¸€äº›å®‰è£…的环境å˜é‡æ”¹ä¸€ä¸‹ï¼Œåœ¨ï¼ˆSET ERLC_FLAGS=åQ‰è¿™è¡Œä¹‹åŽæ·»åŠ ï¼š(x¨¬)
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的数æ®ä½¾|®ï¼ŒåŒ…括wwwåQŒlogåQŒwikiåQŒssl½{‰ï¼ŒAPPDATA为yaws的酾|®ä½¾|®ã€?br />å¦‚æžœä½¿ç”¨é»˜è®¤å®‰è£…å‚æ•°çš„è¯åQŒéœ€è¦å°†IF NOT DEFINED ProgramFiles SET ProgramFiles="c:\Program Files"å’?br />HOME="%HOMEDRIVE%%HOMEPATH%\My Documents"ä¸çš„åŒå¼•å·åŽ»æŽ‰ï¼ˆæ„Ÿè§‰˜q™ä¸ªbatæ–‡äšg写的比较乱)(j¨ª)
åŒæ—¶ä¸è¦å¿˜äº†(ji¨£n)åQŒåœ¨å®‰è£…å¥½ä¹‹åŽæ³¨é‡ŠæŽ‰confæ–‡äšgä¸å…³äºŽssl的部分ã€?br />安装好åŽåQŒé»˜è®¤å°±å¯ä»¥åœ?home/www目录或è€?tmpåQˆwindows䏋䨓(f¨´)%home%\www or C:\tmpåQ‰ç›®å½•æ·»åŠ yawsæ–‡äšgåQˆehtmlåQ‰æ¥æ˜„¡¤ºäº?ji¨£n)ã€?br />btwåQšå¦‚果在ubuntu or debian上安装,最½Ž€å•,åªè¦apt-get install yaws ž®±å¯ä»¥äº†(ji¨£n)。è¿è¡Œyaws需è¦rootæƒé™ã€?br />Long Long Ago 2007-01-18 23:22 å‘表评论]]> Ö÷Õ¾Ö©Öë³ØÄ£°å£º ¾¸Î÷ÏØ| ³à±ÚÊÐ| ×óÔÆÏØ| ÁÙÔóÏØ| פÂíµêÊÐ| òÔºÓÊÐ| ÜÆ½| ÄÏÐÛÊÐ| ÇåºÓÏØ| »¯ÖÝÊÐ| °ÍÑåÄ×¶ûÊÐ| ±¾ÏªÊÐ| ºç¿ÚÇø| ²èÁêÏØ| ¡»ØÏØ| ²©°®ÏØ| ±±íÕÇø| ´ï×ÎÏØ| ÎàÖÝÊÐ| ËìÆ½ÏØ| ÀϺӿÚÊÐ| ÙñÖÝÊÐ| Õò½ÊÐ| ϼÆÖÏØ| °àÂêÏØ| ·ÖÒËÏØ| ɽÎ÷Ê¡| ÐÅÒËÊÐ| ºÓ¶«Çø| ïÃûÊÐ| ÆÕ¶ý| ºéºþÊÐ| ×ÏÑôÏØ| ²ÔÏªÏØ| ´óÎòÏØ| ƽ¹ÈÇø| ¡»¯ÏØ| פÂíµêÊÐ| ¶«À¼ÏØ| ÎÞ¼«ÏØ| Þ»³ÇÊÐ|