乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python 網(wǎng)絡(luò)編程基礎(chǔ)實(shí)例

       看風(fēng)景D人 2014-01-23

      腳本學(xué)堂----網(wǎng)站   

        python實(shí)在是太方便,太易用了,三方庫(kù)的支持又全,語(yǔ)法又簡(jiǎn)單,對(duì)開發(fā)人員來說,實(shí)在是居家旅行,XXXX的必備利器。
          周末研究了下python的網(wǎng)絡(luò)支持,做一下記錄,以備隨后翻閱。

          python支持BSD的socket進(jìn)行網(wǎng)絡(luò)編程,其API跟C中的大同小異,先看看TCP方式的,說到網(wǎng)絡(luò)編程,肯定會(huì)設(shè)計(jì)到server和client,下面分別來看下。

      TCP方式

      server端
      server端的socket一般流程是這樣:
          1.建立一個(gè)socket(可以選擇socket類型INET,UNIX等,以及連接方式TCP/UDP)
          2.使用bind公開一個(gè)端口,使得client可以方便連接
          3.設(shè)置一個(gè)listen隊(duì)列的大小
          4.進(jìn)入一個(gè)無限循環(huán),在此無限循環(huán)中,使用accept函數(shù)來等待客戶連接,此函數(shù)返回一個(gè)新的socket, 對(duì)應(yīng)于客戶端的socket,建立通信信道。對(duì)socket的處理一般放5.在外部單獨(dú)的函數(shù)中(并發(fā))
          6.通過send()/recv()來對(duì)socket進(jìn)行讀寫操作

      下面看一下例子:
         

      復(fù)制代碼 代碼如下:
      def tcpServer(): 
              srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM) 
              srvsock.bind(('', 9527)) 
              srvsock.listen(5) 
           
              while True: 
                  clisock, (remoteHost, remotePort) = srvsock.accept() 
                  print "[%s:%s] connected" % (remoteHost, remotePort) 
                  #do something on the clisock 
                  clisock.close() 
            
          if __name__ == "__main__": 
              tcpServer() 

      client端
          建立一個(gè)新的socket
          使用connect函數(shù)與遠(yuǎn)程主機(jī)獲得連接
          在此socket上進(jìn)行I/O操作
         

      復(fù)制代碼 代碼如下:
      def tcpClient(): 
              clisock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
              clisock.connect(('localhost', 9527)) 
               
              #I/O on this clisock 
              #clisock.send("") 
              #dat = clisock.recv(len) 
               
              print dat 
               
          if __name__ == "__main__": 
              tcpClient() 

       由代碼量可見python之簡(jiǎn)單,想要將這個(gè)例子改造成一個(gè)文件傳輸器,估計(jì)只需要增加不到20行代碼即可。

      UDP方式

      UDP號(hào)稱無連接傳輸,全然沒有TCP那么復(fù)雜,三次握手,錯(cuò)誤重傳之類的機(jī)制都沒有,發(fā)的只管發(fā),收得只管收,收到?jīng)]有?不知道,順序不對(duì)怎么辦?不管!就是這樣,但是速度就要比TCP高得多了。在對(duì)數(shù)據(jù)幀要求不是很高的地方,這確實(shí)是很好用的,比如網(wǎng)絡(luò)上的視頻傳輸,音頻傳輸?shù)取?/p>

      server端
          建立數(shù)據(jù)報(bào)形式的socket
          公開一個(gè)端口,一邊客戶端連接
          開始接收數(shù)據(jù)
         

      復(fù)制代碼 代碼如下:
      def udpServer(): 
              address = ('', 9527) 
              srvsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
              srvsock.bind(address) 
              #data,addr = srvsock.recvfrom(2048) 
           
          if __name__ == "__main__": 
              udpServer() 

       需要注意的是,server中address元組中的引號(hào)表示可以接受任何地址來的數(shù)據(jù)報(bào),TCP例子中的則表示可以接受任意地址發(fā)起的連接。

      client端
          新建一個(gè)數(shù)據(jù)報(bào)socket
          收發(fā)數(shù)據(jù)
         

      復(fù)制代碼 代碼如下:
      def udpClient(): 
              address = ('localhost', 9527) 
              clisock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
              #clisock.sendto(data, address) 
               
          if __name__ == "__main__": 
              udpClient() 

          文中給出的例子已經(jīng)具有網(wǎng)絡(luò)程序的基本結(jié)構(gòu),在實(shí)際應(yīng)用中,應(yīng)該自行擴(kuò)展對(duì)socket的處理,socket說到底跟文件句柄,文件描述符,管道描述符等都是一個(gè)概念,可以對(duì)其進(jìn)行I/O處理,事實(shí)上,在UNIX類系統(tǒng)中,對(duì)socket的操作跟對(duì)文件句柄的操作沒有任何形式上的差異。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多