当前位置: 首页 > Linux

《Linux网络开发必学教程》1_网络编程的核心概念和模型

时间:2023-04-06 11:16:15 Linux

闂锛氱綉缁滅紪绋嬫€庝箞鍋氾紵缃戠粶缂栫▼鐨勬湰璐ㄦ槸鍒╃敤鎿嶄綔绯荤粺鎻愪緵鐨勬帴鍙e嚱鏁帮紝浣垮簲鐢ㄧ▼搴忓叿鏈夊彂閫佸拰鎺ユ敹缃戠粶鏁版嵁鐨勮兘鍔涖€傜綉缁滄帴鍙f槸鎿嶄綔绯荤粺鍦ㄤ唬鐮佸眰闈㈡彁渚涚殑鍔熻兘銆傜綉缁滅紪绋嬪彧鏄竴绯诲垪鐨勭郴缁熷姛鑳姐€傚簲鐢ㄧ▼搴忛€氳繃缃戠粶鎺ュ彛浣跨敤鍜岃繍琛屻€傜郴缁熺殑鑱旂綉鑳藉姏缃戠粶缂栫▼鏄竴绉嶇壒瀹氶鍩燂紙缃戠粶锛夌殑C璇█缂栫▼鍗忚锛氶瀹氫箟鏁版嵁閫氫俊鐨勬暟鎹鍒欏湴鍧€锛氫竴涓暣鏁板€硷紝鐢ㄤ簬鍦ㄧ綉缁滈€氫俊涓爣璇嗕竴涓澶囷紙鈥渪xx.xxx.xxx.xxx鈥?-byte鏁存暟鍊煎彲浠ヨ〃绀猴紝鍙槸涓轰簡鏂逛究璁板繂锛岃浆鎴愬瓧绗︿覆锛夌鍙e彿璁惧鍙戦€佸拰鎺ユ敹鏁版嵁鎸囧畾鐨勫€硷紝鐢ㄦ潵琛ㄧず鍏蜂綋鐨勮繛鎺ュ彲浠ョ悊瑙d负锛氱敤浜庣綉缁滈€氫俊鐨勬暟鎹€氶亾鍦ㄨ澶囦腑渚嬪锛氫竴鍙扮數鑴戝線寰€鍙湁涓€涓狪P锛屾湁澶氫釜搴旂敤锛岃繖鏃跺€欑敤绔彛鏉ュ尯鍒嗚鑹睸erver锛氱瓑寰呰繛鎺ュ埌璁惧Client锛氬彂璧疯繛鎺ョ殑灏辨槸浣滄伓鑰匬S锛氫竴鍙拌澶囧彲浠ュ悓鏃朵綔涓哄鎴风绔拰鏈嶅姟鍣ㄧ綉缁滅煡璇嗗厖鐢垫々鐨刄RL鏄疘P鍦板潃鍚楋紵浠€涔堟槸URL锛屼粈涔堟槸鍩熷悕锛烾RL涓嶆槸IP鍦板潃锛岃€屾槸涓€涓湴鍧€缃戠粶淇℃伅璧勬簮锛堝鐗瑰畾缃戦〉鐨勫湴鍧€锛夛紝鍗砋RL鍩熷悕鏄疘P鍦板潃鐨勫悕绉帮紝澶氫釜鍩熷悕鍙互鎸囧悜鍚屼竴涓狪P鍦板潃銆傚煙鍚嶁啋DNS鈫扞P鍦板潃鍗忚涓€瀹氭槸涓嶈兘璇诲彇浜岃繘鍒舵暟鎹紵鍗忚鏄竴绉嶇害瀹氾紝鍗抽瀹氫箟瑙勫垯鍗忚鍙互鍩轰簬鏂囨湰鎴栦簩杩涘埗鏉ュ畾涔夈€備腑闂?x12345678int4瀛楄妭浣庡湴鍧€馃憠|78|56|34|12|馃憟楂樺湴鍧€澶х绯荤粺锛氶噰鐢ㄥぇ绔ā寮忥紙big-endian锛夌殑绯荤粺锛屽嵆锛氭暟鎹殑浣庡瓧鑺傛斁鍦ㄥ唴瀛橀珮鍦板潃0x12345678int4瀛楄妭浣庡湴鍧€馃憠|12|34|56|78|馃憟楂樺湴鍧€缃戠粶瀛楄妭搴忥細URL瀛楄妭搴忛噰鐢╞ig-endian妯″紡锛屽洜姝ゅ湪little-endian绯荤粺涓渶瑕佸瓧鑺傝浆鎹㈢綉缁滅紪绋嬫ā寮?銆傚噯澶囪繛鎺?.杩炴帴杩滅▼璁惧3.鏀跺彂鏁版嵁4.鍏抽棴涓藉濮愮綉缁滅紪绋嬫帴鍙e垵鎺?include#include鍑芥暟鍘熷瀷鍑芥暟璇存槑intsocket锛坕nt鍩燂紝int绫诲瀷锛宨nt鍗忚锛夛紱鍒涘缓濂楁帴瀛楀噯澶囩綉缁滆繛鎺ntconnect(intsocket,structsockaddr*addr,socklen_tlen);杩炴帴鍒版寚瀹氬湴鍧€鐨勮繙绋嬭澶噑size_tsend(intfd,constvoid*buf,size_tn,intflags);鍚戣繙绋嬭澶囧彂閫佹暟鎹畇size_trecv(intfd,void*buf,size_tn,intflags);鎺ユ敹杩滅▼璁惧鍙戝洖鐨勬暟鎹甶ntclose(intfd);鍏抽棴杩炴帴骞堕攢姣乻ocket缂栫▼瀹為獙锛氱綉缁滅紪绋嬪垵浣撻獙#include#include#include#include#include#include#includeintmain(void){intsock=0;缁撴瀯sockaddr_in鍦板潃={0};char*tosend="GET/index.htmlHTTP/1.1\nHOST:www.dt4sw.com\nUser-Agent:TEST\nConnection:close\n\n";intlen=0;瀛楃buf[128]={0};鏁存暟r=0;sock=socket(PF_INET,SOCK_STREAM,0);if(sock==-1){printf("濂楁帴瀛楅敊璇痋n");杩斿洖-1锛泒addr.sin_family=AF_INET;鍦板潃.sin_addr.s_addr=inet_addr("47.99.217.175");鍦板潃.sin_port=htons(80);if(connect(sock,(structsockaddr*)&addr,sizeof(addr))==-1){鎵撳嵃f("杩炴帴閿欒\n");杩斿洖-1锛泒printf("杩炴帴鎴愬姛\n");len=send(sock,tosend,strlen(tosend),0);printf("鍙戦€佸瓧鑺傛暟=%d\n",len);闀垮害=0;鍋歿inti=0;r=recv(sock,buf,sizeof(buf),0);濡傛灉(r>0){len+=r;}for(i=0;i0);printf("\n");printf("recvbytes=%d\n",len);杩斿洖0;}杈撳嚭锛?/a.outconnectsuccesssendbytes=81HTTP/1.1200OKContent-Type:text/html......recvbytes=22382鎬濊€冿細杩欐鍐欑殑缃戠粶绋嬪簭鏈変粈涔堜綔鐢紵绛旓細瀹㈡埛绔?/p>