python Gopher協議的實現

2021-08-18 02:21:08 字數 1500 閱讀 5339

《網路程式設計基礎》第一章1.5.1.1基本客戶端操作

gopher是internet上乙個非常有名的資訊查詢系統,它將internet上的檔案組織成某種索引,很方便地將使用者從internet的一處帶到另一處。允許使用者使用層疊結構的選單與檔案,以發現和檢索資訊,它擁有世界上最大、最神奇的編目。gopher客戶程式和gopher伺服器相連線,並能使用選單結構顯示其它的選單、文件或檔案,並索引。同時可通過telnet遠端訪問其它應用程式。gopher協議使得internet上的所有gopher客戶程式,能夠與internet上的所有已"註冊"的gopher伺服器進行對話。

該程式需要兩個命令列引數,主機名和檔名,實現從主機上請求相關文件的功能。

**:#!/usr/bin/env python                             //見最下面的注

# ****** gopher client - chapter 1 - gopherclient.py

import socket,sys

port=70

host=sys.argv[1]       

filename=sys.argv[2]

s=socket.socket(socket.af_inet,socket.sock_stream)

s.connect((host,port))

s.sendall(filename+"\r\n")

while 1:

buf=s.recv(2048)

if not len(buf):

break

sys.stdout.write(buf)

sys.argv是乙個包含命令列引數的列表,sys.argv[0]表示程式本身檔案路徑,從sys.argv[1]開始表示在命令列中輸入的引數。

socket.socket()建立乙個socket,af_inet指定使用ipv4協議,ipv6為af_inet6。sock_stream指定使用面向流的tcp協議,這樣,乙個socket物件就建立成功,但是還沒有建立連線。接著,程式連線遠端主機並提供檔名,獲得響應後,在螢幕上列印。

執行程式時需要使用命令列,我是在win10上執行的,所以用的powershell,開始需要先配置python的環境在powershell中輸入:[environment]::setenvironmentvariable(「path」,」$env:path;f:\python26″, 「user」)(我用的python2.6存在了f盤

注:在unix類的作業系統才有意義。

#!/usr/bin/python是告訴作業系統執行這個指令碼的時候,呼叫/usr/bin下的python直譯器。

#!/usr/bin/env python這種用法是為了防止作業系統使用者沒有將python裝在預設的/usr/bin路徑裡。當系統看到這一行的時候,首先

會到env設定裡查詢python的安裝路徑,再呼叫對應路徑下的直譯器程式完成操作。

RTSP協議 RTMP協議 HTTP協議的區別

rtsp rtmp http的共同點 區別?共同點 1.rtsp rtmp http都是在應用應用層。區別 1.http,即超文字傳送協議 ftp即檔案傳輸協議 rtsp,real time streaming protocol 實時流傳輸協議。rtmp全稱routing table mainten...

HTTP協議 RTSP協議 RTMP協議的區別

rtsp rtmp http的共同點 區別 共同點 1 rtsp rtmp http都是在應用應用層。區別 1 http 即超文字傳送協議 ftp即檔案傳輸協議 http real time streaming protocol 實時流傳輸協議。http全稱routing table mainten...

HTTP協議 RTSP協議 RTMP協議的區別

rtsp rtmp http的共同點 區別 共同點 1 rtsp rtmp http都是在應用應用層。區別 1 http 即超文字傳送協議 ftp即檔案傳輸協議 http real time streaming protocol 實時流傳輸協議。http全稱routing table mainten...