青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

興海北路

---男兒仗劍自橫行
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

統計

  • 隨筆 - 85
  • 文章 - 0
  • 評論 - 17
  • 引用 - 0

常用鏈接

留言簿(6)

隨筆分類

隨筆檔案

收藏夾

全是知識啊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

《windows網絡編程技術》之 Winsock基礎 - [技術補鈣]
轉自http://xiekeli.blogbus.com/logs/4019775.html

前段時間根據客服的反映,老翁的前置機程序存在不工作的情況,初步表現為GPRS登錄失敗,我查看了報文(強烈要求老板發獎金,有什么問題我總 是沖鋒在前)發現基本出現在網絡頻繁斷開的情況后(網絡每隔10分鐘被斷開一次,socket錯誤10053,什么原因還不得而知)。忘了說了,前置機是 通過TCP連接到省局的GPRS代理服務器(是由小賴開發的)然后和現場的終端進行通信。前置機程序中是通過delphi的clientsocket進行 連接的。一下子還真不知道是什么原因。對于socket這塊我絕對不是專家,知其然,不知其所以然。于是我決定先從清理基本概念開始:
鳥瞰TCP/IP體系結構 
首先從TCP/IP體系結構開始(這也是不少公司面試時的必備良題?。?,相信下圖已經表達得非常清除了
其次是winsocket與tcp/ip(其實,不止TCP/IP協議族,這里只討論TCP/IP) 
TCP/IP協議核心與應用程序關系圖。

最后是常用協議特性:
 關于定址
Winsock中,通過SOCKADDR_IN結構來描述IP地址和服務端口:
struct sockaddr_in
{
      short                             sin_family;
      u_short                         sin_port;
      struct in_addr               sin_addr;
      char                              sin_zero[8];
};
哦,我只關心IP協議,所以sin_family = AF_INET;
關于端口要注意哦,0-1023為固定服務保留的(別打他們的注意了);1024-49151供普通用戶的普通用戶進程使用;49152-65535是動態和私有端口。
幾個特殊地址:
  INADDR_ANY:允許服務器應用監聽主機上每個網絡接口上的客戶機活動;
  INADDR_BROADCAST用于在一個IP網絡中發送廣播UDP數據報。
字節排序:
從主機字節順序---> 網絡字節順序
返回四字節,用于IP地址
u_long htonl(u_long hostlong)
int WSAHtonl(
        SOCKET s,
        u_long hostlong,
        u_long FAR * lpnetlong
);
返回兩字節,用于端口號
u_short htons(u_short hostshort);
int WSAHtons(
      SOCKET s,
      u_short hostshort,
      u_short FAR * lpnetshort
); 
對應的反向函數:
u_long ntohl(u_long netong)
int WSANtohl(
        SOCKETs,
        u_long netong,
        u_long FAR * lphostlong
);
u_short htons(u_short netshort);
int WSANtons(
      SOCKET s,
      u_short netshort,
      u_short FAR * lphostshort
); 
進入winsocket
 下面開始整理winsocket 的一些細節:
 所有的winsocket應用其實都是調用winsock dll 中的方法,所以通過WSAstartup加載是第一步。否則就會出錯:WSANOTINITIALISED(10093)。
下面先來看看面向連接的協議:
從服務器端來看:
1.bind,將套接字和一個已知的地址進行綁定。
 
這樣就創建了一個流套接字,這個步驟最常見的錯誤是WSAEADDRINUSE (10048) ,表示另外一個進程已經和本地IP和端口進行了綁定,或者那個IP地址和端口號處于TIME_WAIT狀態。
2.Listen,將套接字置于監聽狀態。
  
  int listen(
        SOCKET s,
       int backlog
    )
backlog參數指定了正在等待連接的最大隊列長度,如果實際訪問的客戶端大于該最大長度就會出錯:WSAECONNREFUSED (10061)。事實上該backlog本身也是由基層協議提供者決定的。在這個階段還有一種常見的錯誤就是WSAEINVAL (10022),即沒有綁定就進行監聽了。
3.accept和WSAAccept
SOCKET accept(
SOCKET s,
struct sockaddr FAR *addr,
int FAR* addrlen,
調用accept可為待決連接隊列中的第一個連接請求提供服務。(在服務器端接收連接前,所有的客戶端連接請求是放在一個“待決”隊列中的。)
accept會返回一個新的套接字描述符,它對應于已經接受的那個客戶機連接。對于
該客戶機后續的所有操作,都應使用這個新套接字。至于原來那個監聽套接字,它仍然用于
接受其他客戶機連接,而且仍處于監聽模式。
SOCKET WSAAccept(
SOCKET s,
struct sockaddr FAR *addr,
LPINT addrlen,
LPCONDITIONPROC lpfncondition,
DWORD dwCallBackData
對于客戶端相對要簡單得多,主要由以下幾步:
1) 用socket或WSASocket創建一個套接字。
2) 解析服務器名(以基層協議為準)。
3) 用connect或WSAConnect初始化一個連接。
在connect過程常發生的錯誤有:WSAECONNREFUSED (10061)連接的計算機沒有監聽指定端口的進程;WSAETIMEDOUT (10060)這種情況一般發生在試圖連接的計算機不能用時(亦可能因為到主機之間的路由上出現硬件故障或主機目前不在網上)。
連接之后就是數據傳輸了,就是發送和接收了:
int send(
    SOCKET s,
    const char FAR * buf,
    int len,
    int flags)
返回發送的字節數,如果出錯常見的錯誤是:WSAECONNABORTED (10053) 這一錯誤一般發生在虛擬回路由于超時或協議有錯而中斷的時候。遠程主機上的應用通過執行強行關閉或意外中斷操作重新設置虛擬虛路時,或遠程主機重新啟動時,發生的則是WSAECONNRESET(10054)錯誤。。最后一個常見錯誤是WSAETIMEOUT(10060),它發生在連接由于網絡故障或遠程連接系統異常死機而引起的連接中斷時。
int recv(
    SOCKET s,
    const char FAR * buf,
    int len,
    int flags)
無連接協議
    首先從接收端(類似于有連接方式中的服務端,但不是服務端)看,首先也是通過socket或WSAsocket創建套接字。再通過bind進行綁定。下面跳過Listen和Accept步驟,直接等待接收就可以了。
接收函數:
int recvfrom(
    SOCKET s,
    char FAR * buf,
    int len,
    int flags,
    struct SockAddr FAR *from,
    int FAR * fromlen
)
發送:建立SCOKET后調用sendto或WSASendTo
int sendto(
    SOCKET s,
    char FAR * buf,
    int len,
    int flags,
    struct SockAddr FAR * to,
    int FAR * tolen
)

posted on 2008-03-18 11:16 隨意門 閱讀(611) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜av| 欧美日韩中文在线| 亚洲国产精品久久久久婷婷884| 香蕉久久夜色精品国产| 亚洲专区一区二区三区| 亚洲无线一线二线三线区别av| 亚洲天天影视| 亚洲欧美日本日韩| 久久久天天操| 91久久久久久国产精品| 中日韩午夜理伦电影免费| 亚洲校园激情| 久久精品国产视频| 欧美大片在线观看| 国产精品ⅴa在线观看h| 在线国产日韩| 亚洲字幕在线观看| 另类综合日韩欧美亚洲| 亚洲国产成人精品女人久久久 | 狠狠综合久久| 亚洲国产精品高清久久久| 一区二区三区精品视频| 久久精品免费| 一本色道久久| 久久天天狠狠| 国产精品一区二区视频| 亚洲人成7777| 久久精品2019中文字幕| 亚洲大片免费看| 亚洲欧美日韩在线观看a三区| 久久综合给合久久狠狠狠97色69| 欧美视频福利| 99热免费精品在线观看| 久久精品麻豆| 亚洲一二三区视频在线观看| 久久综合久久综合这里只有精品| 欧美日韩第一区日日骚| 韩国三级电影久久久久久| 亚洲综合视频1区| 亚洲大胆av| 欧美在线影院在线视频| 欧美三级日韩三级国产三级| 亚洲黄一区二区三区| 久久99在线观看| 在线亚洲一区| 欧美少妇一区| 99人久久精品视频最新地址| 欧美成人免费观看| 欧美一区二区久久久| 国产精品福利在线观看| 夜夜嗨av色一区二区不卡| 欧美国产另类| 久久夜色精品亚洲噜噜国产mv| 国产视频久久网| 欧美自拍偷拍午夜视频| 午夜精品一区二区三区在线视| 欧美日韩亚洲一区二区三区在线观看| 亚洲高清免费视频| 蜜桃久久av| 裸体丰满少妇做受久久99精品| 国产专区欧美专区| 久久手机精品视频| 久久久久久久综合| 亚洲大片av| 91久久久亚洲精品| 欧美啪啪成人vr| 中文日韩电影网站| 亚洲一区二区三区成人在线视频精品 | 欧美一区二区日韩| 亚洲欧美日韩国产中文| 国产美女诱惑一区二区| 久久久久成人精品| 久久综合久久综合久久| 日韩亚洲欧美中文三级| 99精品视频免费观看视频| 国产精品久久久久av| 久久av一区二区三区漫画| 久久精品综合网| 亚洲精品免费看| 亚洲最黄网站| 狠狠久久婷婷| 亚洲美女区一区| 国产在线视频不卡二| 欧美激情亚洲精品| 欧美日韩一区二区视频在线观看| 亚洲影院免费观看| 欧美在线看片| 亚洲伦伦在线| 亚洲直播在线一区| 亚洲高清不卡av| 久久av一区| 亚洲激情校园春色| 中文在线不卡| 在线免费高清一区二区三区| 亚洲黄网站在线观看| 国产精品久久久久7777婷婷| 久久婷婷久久| 欧美性生交xxxxx久久久| 久久精品国产精品| 欧美精品在线看| 久久免费视频观看| 欧美性天天影院| 欧美成人午夜视频| 国产精品欧美风情| 亚洲成在人线av| 国精品一区二区三区| 一本色道久久综合亚洲精品高清| 激情偷拍久久| 亚洲一区二区综合| 亚洲精品影视| 老司机亚洲精品| 久久久久亚洲综合| 国产精品国产三级国产普通话99 | 欧美激情精品久久久| 国产精品一区一区三区| 亚洲全部视频| 在线看视频不卡| 久久精品中文| 久久久久久久999精品视频| 欧美美女bb生活片| 亚洲高清影视| 亚洲国产精品一区二区尤物区| 欧美一级视频精品观看| 午夜精品免费在线| 欧美视频二区36p| 一区二区电影免费观看| 亚洲美女91| 欧美成人午夜剧场免费观看| 久久伊人一区二区| 国模一区二区三区| 午夜久久电影网| 欧美在线三区| 国产女主播一区| 亚洲欧美日韩国产精品| 亚洲欧洲99久久| 国产精品亚洲综合| 亚洲午夜久久久久久尤物| 亚洲伊人伊色伊影伊综合网| 欧美日韩专区| 一区二区三区**美女毛片| 中文欧美日韩| 国产精品免费久久久久久| 国产精品99久久久久久久久久久久| 亚洲深夜福利在线| 国产精品久久久久久久久久ktv| 亚洲午夜国产成人av电影男同| 午夜精品短视频| 国产综合久久久久久| 久久高清国产| 欧美成年人在线观看| 亚洲激情综合| 欧美色一级片| 欧美亚洲一区三区| 免费亚洲婷婷| 夜夜嗨av一区二区三区免费区| 国产精品久久久久久久久久ktv| 久久久精品一区二区三区| 久久资源av| 亚洲国产一成人久久精品| 欧美aa国产视频| 亚洲人人精品| 小处雏高清一区二区三区| 黄色工厂这里只有精品| 免费看亚洲片| 亚洲视频电影在线| 久热精品视频在线观看| 日韩视频在线播放| 国产精品高潮呻吟| 欧美在线播放一区| 亚洲欧洲日本在线| 欧美在线精品免播放器视频| 亚洲电影网站| 国产精品亚发布| 欧美a级理论片| 欧美一区二区视频在线观看| 亚洲国产综合视频在线观看| 午夜精品视频| 亚洲精品综合在线| 国产在线精品自拍| 欧美性淫爽ww久久久久无| 美女视频黄 久久| 亚洲综合三区| 亚洲日韩成人| 麻豆成人小视频| 亚洲一区免费网站| 91久久精品国产| 国内免费精品永久在线视频| 欧美日韩精品久久久| 久久亚洲一区| 校园激情久久| 在线视频精品一区| 亚洲国内自拍| 欧美www在线| 久久福利一区| 亚洲欧美日韩一区二区三区在线观看 | 欧美激情视频一区二区三区免费| 午夜视频久久久| 一区二区国产日产| 亚洲欧洲三级电影| 亚洲第一久久影院|