国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python網絡編程學習筆記(一)

2020-02-23 05:25:47
字體:
來源:轉載
供稿:網友

學習用書:《python 網絡編程基礎》作者John Goerzen

第一部分底層網絡學習

        Python提供了訪問底層操作系統Socket接口的全部方法,需要的時候這些接口可以提供靈活而強有力的功能。

(1)基本客戶端操作

        在《python 網絡編程基礎》一書中,作者列出了一個簡單的Python客戶端程序,具體如下:

代碼如下:
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)

該程序實現的是Gopher協議,實現從主機上請求相關文檔的功能。(Gopher是Internet上一個非常有名的信息查找系統,它將Internet上的文件組織成某種索引,很方便地將用戶從Internet的一處帶到另一處。在WWW出現之前,Gopher是Internet上最主要的信息檢索工具,Gopher站點也是最主要的站點。但在WWW出現后,Gopher失去了昔日的輝煌?,F在它基本很少被使用。)
       于是,我按照書上的語句進行了一下測試,在dos下運行python gopherclient.py quux.org。但是系統提示為

Traceback (most recent call last):
File "gopherclient.py", line 5, i
filename=sys.argv[2]
IndexError: list index out of range

看了一下,sys.argv只有兩個元素['gopherclient.py', 'quux.org/']所以filename=sys.argv[2]就超出下界了??墒菫槭裁磿霈F這個原因呢?是書里面寫錯了嗎,因為我也是初學socket,不是很了解,所以我也是沒有找到原因,如果哪位大牛知道是什么原因,希望能給講解一下。

(2)基本服務器操作
        《python 網絡編程基礎》一書中同樣給出了一個簡單的服務器程序,具體如下:

代碼如下:
import socket
host=''
port=51423
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)

print "Server is running on port %d;press Ctrl-C to terminate." %port
while 1:
    clientsock,clientaddr=s.accept()
    clientfile=clientsock.makefile('rw',0)
    clientfile.write("welcome,"+str(clientaddr)+'/n')
    clientfile.write("Please enter a string:")
    line=clientfile.readline().strip()
    clientfile.write("You entered %d characters./n" %len(line))
    clientfile.close()
    clientsock.close()

該程序運行后,提示“Server is running on port 51423:press Ctrl-C to terminate”。此時,通過另一臺機器telnet本機器的51423端口,如telnet 127.0.0.1:51423,此時會提示welcome 127.0.0.1 ****,please enter a string:。 然后輸入幾個字符后,會返回你輸入字符的個數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安阳县| 南开区| 松江区| 陇南市| 黄梅县| 四川省| 万州区| 象山县| 涡阳县| 屏东市| 沂水县| 公主岭市| 石柱| 柳河县| 太白县| 灵寿县| 黄冈市| 巨野县| 华坪县| 富民县| 巫溪县| 陕西省| 无锡市| 柳林县| 大连市| 房山区| 黔江区| 怀柔区| 松潘县| 上思县| 普洱| 若羌县| 南安市| 蓬安县| 宜川县| 湟中县| 钟祥市| 紫阳县| 哈尔滨市| 宾阳县| 义马市|