麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

初試python網絡通信

2019-11-14 08:46:28
字體:
來源:轉載
供稿:網友

Python網絡通信

網絡通信你怕不怕,相當厲害的技能!今天從《Python標準庫》第5章直接跳到了第11章——網絡通信。 然后實現了TCP/ip客戶和服務器,以及UDP客戶和服務器實現。網絡部分之前有所了解,但是不夠深入。應用層幾個最具代表性的協議了解一下,不過年代久遠,而且當時沒有動手實踐。今天最終實現了,也算是亡羊補牢?來記錄下今天實現的東西

TCP/IP

基于socket庫實現。 書上代碼如下

import socketimport sys#Create a TCP/IP socketsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server_name = sys.argv[1]server_address = (server_name,10002)PRint >>sys.stderr,'starting up on %s port %s '%server_addresssock.bind(server_address)sock.listen(1)while True: print >>sys.stderr,'waiting for a connection' connection,client_address = sock.accept() try: print >>sys.stderr,'connection from',client_address while True: data = connection.recv(16) print >>sys.stderr,'received "%s" ' % data if data: print >>sys.stderr,'sending data back to the client' connection.sendall(data) else: print >>sys.stderr,'no data from',client_address break finally: connection.close()

這是服務器的,主體思想是先建立一個socket,然后綁定一個端口,然后監聽。非常清楚,感謝之前各位已經造好輪子的dalao們。 順便說下,書上所用端口是10000,我改成了10002,原因是會報錯,socket error 10048 查了一下發現應該是端口被用了,所以改了 然后下面是客戶的示例:

import socketimport sysdef get_constans(prefix): """Create a dictionary mapping socket module constants to their name """ return dict((getattr(socket,n),n) for n in dir(socket) if n.startswith(prefix) )families = get_constans('AF_')types = get_constans('SOCK_')protocols = get_constans('IPPROTO_')sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server_address = (sys.argv[1],10002)sock.connect(server_address)try: message = 'Oh here is my first try to make a server and client.It is so cooooooooooool' sock.send(message) amount_received = 0 amount_expected = len(message) while amount_received<amount_expected: data = sock.recv(16) amount_expected += len(data) print >>sys.stderr,' received "%s" '%data

這樣就實現了一個TCP/IP的客戶和服務器。這個兩個需要cmd運行,并且提供一個地址。我用的是自己的IP地址,當然好多細節還是需要日后去了解。我的一小步,日后的一大步。 下面是udp的了。

UDP

udp和tcp/ip 在服務器上的差異在于 sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 上面的是udp,下面是tcp sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 好像tcp和udp關于報文的長短格式也是有差異。 這些以后復習了再記錄吧。

客戶端的差異,從模型而言。tcp連接需要三次握手,udp不要。 所以tcp的客服端連接為 server_address = (sys.argv[1],10002) sock.connect(server_address)

udp直接 send to 就可以了. sent = sock.sendto(message,server_address)

接收方面,一個是recv()此乃tcp的,一個是recvfrom(),此乃udp的

差不多就是這些東西了。

還要點問題是關于書中所講的 IP地址表示 一節 我還是沒有猜出來 inet_ntoainet_aton中的a和n分別是什么 還得找人問下。 現在4.30還可以繼續看下去。有趣有趣!


上一篇:廣告印刷

下一篇:微信小程序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线免费av观看 | 久久综合网址 | 国产精品久久久久国产精品三级 | 久久亚洲美女视频 | 1级黄色毛片 | 911色_911色sss主站色播 | 深夜免费观看视频 | 日本在线播放一区二区三区 | 国产91在线亚洲 | 日韩视频在线不卡 | 国产伦精品一区二区三区 | 黄色毛片视频在线观看 | 免费放黄网站在线播放 | 国产精品高潮视频 | 免费毛片在线 | 国产日韩在线观看一区 | 在线a亚洲视频播放在线观看 | 一级国产精品一级国产精品片 | 又黄又爽免费无遮挡在线观看 | 久久福利小视频 | 一区二区久久电影 | 污污黄 | 中国免费一级毛片 | 国产精品99精品 | 国产1区在线观看 | 国产成人高清在线观看 | 欧美一级精品片在线看 | 久久久一区二区三区四区 | 精品国产91久久久久久久妲己 | 欧美激情第一区 | 婷婷久久影院 | 国产成年人视频 | 91精品国产91热久久久做人人 | 中文字幕在线视频网站 | 久久精品视频一区二区三区 | 欧美a在线观看 | 网站毛片 | 久久精品国产亚洲7777 | 免费在线观看午夜视频 | 国产精品视频yy9299一区 | 毛片大全在线观看 |