摘要:網(wǎng)絡(luò)編程學(xué)習(xí)本文主要介紹網(wǎng)絡(luò)通信,以及的通信例子網(wǎng)絡(luò)通信是嵌套字的意思,可以理解為與們間的在線會話。關(guān)于通信可以看這里簡單理解多線程下開啟一個對于服務(wù)端,需要做件事情開啟設(shè)置配置綁定端口幀監(jiān)聽,收發(fā)包多線程關(guān)于報錯模塊提供個函數(shù)。
http://homeway.me/
socket是嵌套字的意思,可以理解為server與client們間的在線會話。
關(guān)于socket通信可以看這里:
http://queengina.com/2014/10/09/簡單理解Socket/
對于server服務(wù)端,python socket需要做4件事情
1.開啟socket
2.設(shè)置配置socket
3.綁定端口
4.幀監(jiān)聽,收發(fā)包
=> server.py
#!/usr/bin/python # -*- coding:utf-8 -*- import socket import threading import time import sys clients = [] class RecvMsg(threading.Thread): def __init__(self, sock): threading.Thread.__init__(self) self.sock = sock def run(self): global clients while True: msg = self.sock.recv(512) print "recv=>",msg for client in clients: if client != self.sock: message = {} message["id"] = self.sock message["time"] = time.time() message["type"] = "server send" print "send=>", message client.send( str(message) ) pass pass def main( port ): sock = socket.socket() sock.bind(( socket.gethostname(), int(port) )) sock.listen(5) while True: client, address = sock.accept() print "a client connected" if client not in clients: clients.append(client) recvMsg = RecvMsg(client) recvMsg.start() sock.close() if __name__ == "__main__": port = sys.argv[1] main( port )
python server.py 56565
=> client.py
#!/usr/bin/python # -*- coding:utf-8 -*- import socket import threading import os,time import sys class RecvMsg(threading.Thread): def __init__(self, sock): threading.Thread.__init__(self) self.sock = sock def run(self): while True: recvMsg = self.sock.recv(512) print "recv=>",recvMsg def sendMsg(sock): msg = time.time() message = {} message["id"] = os.getpid() message["msg"] = msg print "send=>", message sock.send(str(message)) def main( port ): sock = socket.socket() sock.connect(( socket.gethostname(), int(port) )) recvMsg = RecvMsg(sock) recvMsg.start() while True: time.sleep(1.5) sendMsg(sock) if __name__ == "__main__": port = sys.argv[1] main( port )
python client.py 56565
socket模塊提供4個error函數(shù)。
1.關(guān)于一般I/O和通信有關(guān)的問題 socket.error
2.與查詢地址有關(guān) socket.gaierror
3.與其他地址錯誤有關(guān) socket.herror
4.與上個socket調(diào)用timeout有關(guān) socket.timeout
舉個例子:(保存為error.py)#!/usr/bin/python # -*- coding:utf-8 -*- from socket import * import time,sys HOST = socket.gethostname() PORT = sys.argv[0] BUFSIZ = 1024 ADDR = ( HOST, int(PORT) ) SerSock = socket(AF_INET, SOCK_STREAM) try: SerSock.bind(ADDR) except socket.error, e: print "socket.error=>",e except socket.gaierror, e: print "socket.gaierror=>",e except socket.herror, e: print "socket.herror=>",e SerSock.listen(5) while True: print "waiting for message..." CliSock, addr = tcpSerSock.accept() print "...connect from :", addr while True: data = CliSock.recv(BUFSIZ) if not data: break CliSock.send("[%s] %s" % (time.ctime(), data)) CliSock.close() SerSock.close()
python error.py 54545
-by小草
2014-10-21 22:34:54
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37443.html
摘要:安卓開發(fā)一般都需要進(jìn)行日志管理,常用操作老司機已為你封裝完畢,你可以用這份工具進(jìn)行管理,具體可以查看源碼,現(xiàn)在為你開車,傳送門。當(dāng)前沒有網(wǎng)絡(luò)連接時返回獲取當(dāng)前網(wǎng)絡(luò)的具體類型上下文當(dāng)前網(wǎng)絡(luò)的具體類型。 ??安卓開發(fā)一般都需要進(jìn)行日志管理,常用操作老司機已為你封裝完畢,你可以用這份工具進(jìn)行管理,具體可以查看源碼,現(xiàn)在為你開車,Demo傳送門。 站點 系統(tǒng)日志輸出工具類 → AppKeyBo...
摘要:參考鏈接面向?qū)ο缶幊棠P同F(xiàn)在的很多編程語言基本都具有面向?qū)ο蟮乃枷耄热绲鹊龋嫦驅(qū)ο蟮闹饕枷雽ο螅悾^承,封裝,多態(tài)比較容易理解,這里就不多多描述了。 前言 在我們的日常日發(fā)和學(xué)習(xí)生活中會常常遇到一些名詞,比如 命令式編程模型,聲明式編程模型,xxx語言是面向?qū)ο蟮牡鹊龋@個編程模型到處可見,但是始終搞不清是什么?什么語言又是什么編程模型,當(dāng)你新接觸一門語言的時候,有些問題是需...
摘要:第層網(wǎng)絡(luò)的一個值得注意的示例是以太網(wǎng),其中表示為子層。與其他方案相比,相對容易安裝和配置。與不同,不使用網(wǎng)絡(luò)。網(wǎng)絡(luò)策略是其最受追捧的功能之一。 本文將在介紹技術(shù)原理和相應(yīng)術(shù)語的基礎(chǔ)上,再集中探索與詳細(xì)對比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,對比介紹它們的原理、使用方法、適用場景和優(yōu)缺點等。 showImg(https://segmentfaul...
閱讀 2190·2020-06-12 14:26
閱讀 2493·2019-08-29 16:41
閱讀 1892·2019-08-29 15:28
閱讀 2461·2019-08-26 13:43
閱讀 764·2019-08-26 13:37
閱讀 2782·2019-08-23 18:13
閱讀 2809·2019-08-23 15:31
閱讀 1025·2019-08-23 14:10