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

興海北路

---男兒仗劍自橫行
<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>
            亚洲精品一区二区三区蜜桃久 | 久久人91精品久久久久久不卡| 亚洲人成小说网站色在线| 久久一本综合频道| 亚洲伦理在线观看| 鲁大师影院一区二区三区| 麻豆成人av| 欧美剧在线免费观看网站| 欧美日韩成人在线观看| 午夜精品福利一区二区三区av| 亚洲欧美一区二区视频| 久久国产精品黑丝| 欧美激情按摩| 国产精品系列在线播放| 国内自拍一区| av成人手机在线| 久久精品成人欧美大片古装| 免费av成人在线| 一本大道久久精品懂色aⅴ| 性欧美video另类hd性玩具| 噜噜爱69成人精品| 国产麻豆精品在线观看| 99re66热这里只有精品3直播| 午夜免费在线观看精品视频| 欧美大片在线看| 亚洲一区二区免费在线| 欧美成人激情视频免费观看| 国产一区二区三区四区老人| 一本到高清视频免费精品| 久久精品1区| 一区二区三区欧美在线| 狂野欧美性猛交xxxx巴西| 国产精品毛片| 一区二区黄色| 亚洲国产精品第一区二区| 欧美一区二区三区视频免费播放| 欧美日韩国产在线一区| 亚洲国产精品一区二区尤物区| 欧美一区二区黄色| 9久re热视频在线精品| 欧美激情视频在线播放| 精品成人在线观看| 欧美一级黄色网| 亚洲少妇自拍| 欧美日韩精品一二三区| 亚洲欧洲一区二区天堂久久 | 国产精品成人一区二区三区夜夜夜| 国内外成人免费激情在线视频| 亚洲视频在线一区观看| 91久久线看在观草草青青| 久久欧美中文字幕| 黄色成人在线观看| 久久综合色天天久久综合图片| 亚洲欧美国产高清| 国产伦精品一区二区三| 亚洲欧美在线x视频| 99视频日韩| 欧美午夜视频| 欧美少妇一区二区| 在线日韩日本国产亚洲| 麻豆精品精华液| 久久综合一区二区三区| 亚洲国产精品毛片| 亚洲第一区色| 在线一区二区三区四区五区| 久久久久高清| 一区视频在线看| 模特精品在线| 欧美片网站免费| 亚洲一区久久久| 亚洲欧美国产精品桃花| 国内偷自视频区视频综合| 欧美freesex8一10精品| 麻豆成人91精品二区三区| 日韩午夜在线观看视频| 一本一本大道香蕉久在线精品| 欧美视频精品在线| 久久久国产午夜精品| 老牛国产精品一区的观看方式| 亚洲精选国产| 亚洲图片你懂的| 国内久久视频| 亚洲精品一区二区三区99| 国产伦精品一区二区三区免费| 久久综合久久综合久久| 欧美全黄视频| 久久久国产一区二区三区| 欧美成人影音| 久久国产黑丝| 欧美经典一区二区| 欧美专区日韩视频| 欧美精品久久久久久| 久久精品人人做人人综合 | 国产裸体写真av一区二区| 欧美aⅴ一区二区三区视频| 欧美日本韩国| 久久中文字幕导航| 欧美日韩国产电影| 久久久久久久性| 国产精品v亚洲精品v日韩精品| 老色鬼精品视频在线观看播放| 欧美丝袜一区二区三区| 女同一区二区| 国产婷婷色一区二区三区在线| 欧美激情第二页| 国产一区二区三区高清播放| 亚洲激情在线激情| 国产一区二区无遮挡| 99re8这里有精品热视频免费 | 国产婷婷色综合av蜜臀av| 亚洲乱码国产乱码精品精可以看| 国产午夜精品在线| 亚洲视频1区| 99re8这里有精品热视频免费| 欧美怡红院视频| 亚洲综合欧美日韩| 欧美美女bbbb| 91久久精品国产91久久性色tv| 亚洲日本激情| 羞羞视频在线观看欧美| 欧美成人第一页| 免费在线亚洲| 狠狠色丁香婷婷综合影院| 欧美国产在线观看| 国产欧美精品一区二区三区介绍| 亚洲国产日韩在线| 在线观看日韩专区| 久久精品国产成人| 久久久久久久综合| 国产一区成人| 久久国产精品久久久| 久久www免费人成看片高清 | 在线电影一区| 久久精品国产精品亚洲综合| 久久精品国产亚洲一区二区三区| 国产日韩欧美综合| 久久狠狠久久综合桃花| 免费影视亚洲| 亚洲日本va午夜在线影院| 欧美成ee人免费视频| 亚洲黄色av| 一区二区欧美日韩视频| 欧美视频三区在线播放| 亚洲一区二区视频在线观看| 久久福利电影| 亚洲电影观看| 欧美黄色aaaa| 亚洲五月六月| 久久精品一区二区三区四区| 韩国久久久久| 欧美成人性生活| 99综合视频| 久热精品视频在线免费观看| 在线看片第一页欧美| 欧美精品一区二区三区一线天视频 | 欧美精品一区二区三区高清aⅴ| 99视频精品全国免费| 欧美在线3区| 伊人成人在线| 欧美日韩福利| 欧美一区免费视频| 亚洲国产精品激情在线观看| 亚洲一区二区三区高清| 国产日产亚洲精品| 欧美jizz19hd性欧美| 99re这里只有精品6| 久久黄色影院| 中文一区二区| 在线免费观看成人网| 欧美日韩国产精品自在自线| 午夜精品亚洲| 亚洲精品欧美日韩| 久久久精品久久久久| 一本一本久久a久久精品牛牛影视| 国产欧美精品日韩| 欧美久色视频| 久久人人爽爽爽人久久久| 一本不卡影院| 亚洲成人在线免费| 一区二区三区产品免费精品久久75| 午夜在线成人av| 一本久道久久久| 欧美成人免费小视频| 亚洲一区二区免费| 亚洲欧洲日本在线| 久久婷婷久久一区二区三区| 中文日韩欧美| 亚洲激情一区| 韩国精品在线观看| 国产精品爽爽爽| 欧美日韩福利| 欧美成人a∨高清免费观看| 欧美在线观看一区| 中日韩美女免费视频网址在线观看 | 久久精品亚洲精品| 亚洲一区999| 日韩亚洲在线观看| 亚洲国产精品一区| 欧美阿v一级看视频| 久久久久久成人|