• <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>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Windows下與Linux下編寫socket程序的區(qū)別

            【【W(wǎng)indows】】

            【W(wǎng)indows: 頭文件的區(qū)別】

            #include<winsock.h>
            #include
            <winsock2.h>


            【W(wǎng)indows: 初始化的區(qū)別】

            WSADATA wsaData;
            WSAStartup(
            0x202,&wsaData);


            【W(wǎng)indows: 聲明Socket】
            SOCKET類型


            【W(wǎng)indows: Socket關(guān)閉】
            closesocket()


            【W(wǎng)indows: Socket操作錯(cuò)誤返回值】
            SOCKET_ERROR


            【W(wǎng)indows: 設(shè)置socket非阻塞】

            ioctlsocket(server_socket,FIONBIO,&ul);


            【W(wǎng)indows: WSA宏】
            WSA相關(guān)的操作


            【W(wǎng)indows: Select()函數(shù)】
            Select()函數(shù)的第一個(gè)參數(shù)無效,寫0就可以了。


            【W(wǎng)indows: 編譯連接】
            Ws2_32.lib


            【W(wǎng)indows: 錯(cuò)誤捕捉】
            WSAGetLastError() 或者 GetLastError().


            【W(wǎng)indows: 異常處理】
            沒有對(duì)send()的異常處理,最后一個(gè)參數(shù)無效,寫0就可以了。


            【W(wǎng)indows: sockaddr_in結(jié)構(gòu)】

            addr_var.sin_addr.S_un.S_addr

            Winsock里最后那個(gè)32bit的S_addr也有幾個(gè)以聯(lián)合(Union)的形式與它共享內(nèi)存空間的成員變量(便于以其他方式賦值).
            遇到那種得到了是4個(gè)char的IP的形式(比如127一個(gè),0一個(gè),0一個(gè)和1一個(gè)共四個(gè)char),WinSock可以直接用4個(gè)S_b來賦值到S_addr里.


            【【Linux】】

            【Linux: 頭文件的區(qū)別】

            #include <netinet/in.h> //大部分都在這兒
            #include <unistd.h> // close函數(shù)在這兒
            #include <sys/socket.h> // 在in.h里已經(jīng)包含了,可以省了
            #include <errno.h> // 錯(cuò)誤處理
            #include <sys/types.h> // 系統(tǒng)類型定義


            【Linux: 初始化的區(qū)別】
            啥都不用做

            【Linux: 聲明Socket】
            SOCKET類型在Linux中沒有定義,直接用int即可。


            【Linux: Socket關(guān)閉】
            close()


            【Linux: Socket操作錯(cuò)誤返回值】
            在Linux中沒有定義,判斷socket操作是否成功可用返回值是否為-1即可,可將SOCKET_ERROR聲明為-1。


            【Linux: 設(shè)置socket非阻塞】
            ioctlsocket在Linux中沒有定義,用fcntl替代即可,但要包含fcntl.h頭文件。

            #include<fcntl.h>
            fcntl(server_socket,F_SETFL, O_NONBLOCK);

             

            【Linux: WSA宏】
            WSA相關(guān)的操作在Linux不必要,直接去掉即可。


            【Linux: Select()函數(shù)】
            Select()函數(shù)的第一個(gè)參數(shù)必須是后幾個(gè)參數(shù)用到的socket中,值最大的數(shù)(整型)加1。


            【Linux: 編譯連接】
            連接是使用參數(shù):-lstdc
            運(yùn)行時(shí)需要libstdc++.so.5,可在/usr/lib目錄中創(chuàng)建一個(gè)鏈接。


            【Linux: 錯(cuò)誤捕捉】

            #include <errno.h>
            extern int errno;
            int geterror(){return errno;}

             

            【Linux: 異常處理】
            當(dāng)連接斷開,還發(fā)數(shù)據(jù)的時(shí)候,不僅send()的返回值會(huì)有反映,而且還會(huì)像系統(tǒng)發(fā)送一個(gè)異常消息,如果不作處理,系統(tǒng)會(huì)出BrokePipe,程序會(huì)退出。為此,send()函數(shù)的最后一個(gè)參數(shù)可以設(shè)MSG_NOSIGNAL,禁止send()函數(shù)向系統(tǒng)發(fā)送異常消息。 


            【Linux: sockaddr_in結(jié)構(gòu)】
            addr_var.sin_addr.s_addr
            Linux的Socket沒有這個(gè)聯(lián)合,就是一個(gè)32bit的s_addr。
            遇到那種得到了是4個(gè)char的IP的形式(比如127一個(gè),0一個(gè),0一個(gè)和1一個(gè)共四個(gè)char),在Linux下,可以用邊向左移位(一下8bit,共四下)邊相加的方法賦值。

            posted on 2010-06-10 23:41 楊粼波 閱讀(1621) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久精品人妻一区二区三区四| 日本道色综合久久影院| 亚洲七七久久精品中文国产| 亚洲人成无码www久久久| 亚洲国产精品成人久久| 97r久久精品国产99国产精| 久久国产三级无码一区二区| 久久一区二区三区免费| 99蜜桃臀久久久欧美精品网站 | 久久福利青草精品资源站| 91亚洲国产成人久久精品| 久久综合精品国产一区二区三区| 久久久亚洲裙底偷窥综合| 88久久精品无码一区二区毛片 | 久久亚洲国产成人精品性色| 国产精品无码久久四虎| 亚洲va久久久噜噜噜久久天堂| 国产精品美女久久久久AV福利| 国产激情久久久久久熟女老人 | 国产精品久久久久影院色| 色婷婷狠狠久久综合五月| 久久99精品综合国产首页| 亚洲国产成人久久综合野外| 四虎国产精品免费久久5151| 伊人久久大香线蕉综合影院首页| 亚洲精品NV久久久久久久久久 | 久久五月精品中文字幕| 国产精品久久久久久久| 国内精品伊人久久久久av一坑 | 久久国产综合精品五月天| 久久青青草原精品国产| 久久人妻少妇嫩草AV蜜桃| 一个色综合久久| 综合久久久久久中文字幕亚洲国产国产综合一区首| 成人免费网站久久久| 精品综合久久久久久97| 精品久久久久成人码免费动漫| 综合久久一区二区三区 | 亚洲国产精品成人久久蜜臀 | 日本五月天婷久久网站| 人人妻久久人人澡人人爽人人精品|