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

興海北路

---男兒仗劍自橫行
<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>
            久久综合狠狠综合久久综青草| aa级大片欧美三级| 久久国产一区二区| 亚洲欧美中文日韩在线| 99天天综合性| 99精品国产99久久久久久福利| 亚洲欧洲日夜超级视频| 欧美激情自拍| 亚洲电影下载| 亚洲免费成人av| 一级日韩一区在线观看| 亚洲一卡久久| 午夜免费电影一区在线观看| 欧美一区综合| 欧美高清影院| 国产精品大全| 国内精品久久久久久久影视麻豆 | 亚洲日本欧美日韩高观看| 亚洲黄色片网站| 一区二区三区|亚洲午夜| 欧美一区二区三区的| 久久精品导航| 亚洲人成网站在线观看播放| 一区二区高清| 久久狠狠婷婷| 欧美日韩ab片| 日韩视频不卡| 亚洲精选中文字幕| 亚洲欧美日本国产有色| 久久大逼视频| 欧美a一区二区| 国产精品成人va在线观看| 国产免费观看久久黄| 亚洲成人自拍视频| 亚洲午夜免费视频| 久久久精品免费视频| 亚洲国产1区| 亚洲男女自偷自拍| 免费短视频成人日韩| 国产精品久久久久久影院8一贰佰| 国产精品久久久久久久午夜片| 国产亚洲va综合人人澡精品| 亚洲国产精品成人| 经典三级久久| 亚洲精一区二区三区| 久久国产精品99国产| 激情校园亚洲| 一本色道久久综合一区| 久久国产精品久久久久久久久久| 欧美成人免费观看| 亚洲愉拍自拍另类高清精品| 亚洲欧美日韩国产一区二区| 美腿丝袜亚洲色图| 国产日韩欧美| 亚洲午夜免费福利视频| 欧美成人免费在线视频| 日韩一级黄色大片| 一区二区av| 亚洲欧美中文日韩v在线观看| 欧美二区在线观看| 亚洲高清一区二| 在线中文字幕日韩| 国产婷婷色一区二区三区四区| 夜夜嗨av色综合久久久综合网| 久久九九有精品国产23| 在线亚洲成人| 欧美激情一区二区三区高清视频| 国内激情久久| 久久av在线| 亚洲欧美国产一区二区三区| 久久精品二区三区| 欧美片第一页| 亚洲精品看片| 亚洲第一精品电影| 久热精品视频在线观看| 国内精品一区二区三区| 欧美一区国产一区| 亚洲一区二区免费在线| 久久综合中文色婷婷| 国产欧美日韩视频一区二区三区| 欧美激情国产日韩| 国内精品福利| 欧美一区二区三区在线观看| 午夜国产精品影院在线观看| 亚洲日本激情| 欧美久色视频| 一本大道av伊人久久综合| 久久先锋影音av| 欧美一区深夜视频| 欧美新色视频| 先锋资源久久| 一区二区三区欧美在线观看| 久久婷婷av| 狠狠色伊人亚洲综合网站色| 国产精品免费看| 亚洲欧美另类久久久精品2019| 一区二区精品在线| 国产伦精品一区二区三区四区免费 | 久久精品99国产精品| 国产精品一区二区女厕厕| 久久精品国产一区二区三| 欧美亚洲视频在线观看| 国内揄拍国内精品久久| 欧美成年人视频网站欧美| 欧美区高清在线| 亚洲一区二区成人| 欧美一区二区三区视频在线| 亚洲一区在线观看免费观看电影高清| 国产乱码精品一区二区三区忘忧草| 欧美中文在线观看国产| 浪潮色综合久久天堂| 99这里有精品| 欧美亚洲日本国产| 亚洲伊人一本大道中文字幕| 亚洲欧美在线一区二区| 亚洲啪啪91| 久热精品视频在线| 久久视频在线免费观看| 一区二区欧美日韩| 欧美中文字幕在线视频| 亚洲精品黄色| 亚洲综合电影| 亚洲精品乱码| 亚洲激情视频在线播放| 欧美顶级少妇做爰| 久久国产精品99国产| 欧美激情综合网| 久久久久久9| 欧美性大战久久久久久久蜜臀| 久久免费视频一区| 欧美视频精品一区| 免费日韩精品中文字幕视频在线| 免费试看一区| 亚洲国产婷婷| 亚洲清纯自拍| 激情文学一区| 欧美激情第4页| 国产精品久久999| 亚洲第一区色| 尤物九九久久国产精品的特点| 欧美a级片一区| 久久亚洲精品中文字幕冲田杏梨| 欧美日韩一区二| 久久狠狠婷婷| 国产精品黄页免费高清在线观看| 欧美成人午夜77777| 国产色视频一区| 免费日韩成人| 在线看视频不卡| 欧美一区二区在线看| 夜夜嗨av一区二区三区| 欧美亚洲在线| 日韩视频精品在线| 久久亚洲国产成人| 欧美自拍偷拍| 欧美区日韩区| 亚洲精品自在在线观看| 91久久综合| 欧美成人dvd在线视频| 亚洲少妇在线| 欧美喷潮久久久xxxxx| 亚洲精品一区二区三区蜜桃久 | 久久成人精品视频| 久久亚洲精品一区二区| 国产原创一区二区| 亚洲成人在线网| 国产欧美一区二区三区视频| 一区二区三区欧美日韩| 性8sex亚洲区入口| 欧美成人免费网站| 最新国产成人在线观看| 国产一区二区三区电影在线观看 | 国产精品美女在线观看| 亚洲一区二区三区中文字幕| 亚洲欧美日韩中文在线制服| 国产精品超碰97尤物18| 亚洲一区二区三区四区中文| 亚洲毛片视频| 欧美性做爰猛烈叫床潮| 亚洲欧美日本国产专区一区| 亚洲人精品午夜| 欧美日韩精品在线| 亚洲日本免费| 亚洲国产综合在线| 欧美日韩亚洲激情| 亚洲免费在线| 久久综合中文字幕| 亚洲美女av网站| 国产精品国产三级国产专播精品人| 亚洲一区亚洲| 欧美激情视频给我| 亚洲视频碰碰| 欧美伦理a级免费电影| 欧美成年人视频网站欧美| 一区二区电影免费观看| 国产伦精品一区二区三区在线观看 | 亚洲人精品午夜| 这里只有精品视频| 国产酒店精品激情| 欧美国产日韩a欧美在线观看|