摘要:網絡編程學習本文主要介紹網絡通信,以及的通信例子網絡通信是嵌套字的意思,可以理解為與們間的在線會話。關于通信可以看這里簡單理解多線程下開啟一個對于服務端,需要做件事情開啟設置配置綁定端口幀監聽,收發包多線程關于報錯模塊提供個函數。
http://homeway.me/
socket是嵌套字的意思,可以理解為server與client們間的在線會話。
關于socket通信可以看這里:
http://queengina.com/2014/10/09/簡單理解Socket/
對于server服務端,python socket需要做4件事情
1.開啟socket
2.設置配置socket
3.綁定端口
4.幀監聽,收發包
=> 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函數。
1.關于一般I/O和通信有關的問題 socket.error
2.與查詢地址有關 socket.gaierror
3.與其他地址錯誤有關 socket.herror
4.與上個socket調用timeout有關 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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37443.html
摘要:參考鏈接面向對象編程模型現在的很多編程語言基本都具有面向對象的思想,比如等等,而面向對象的主要思想對象,類,繼承,封裝,多態比較容易理解,這里就不多多描述了。 前言 在我們的日常日發和學習生活中會常常遇到一些名詞,比如 命令式編程模型,聲明式編程模型,xxx語言是面向對象的等等,這個編程模型到處可見,但是始終搞不清是什么?什么語言又是什么編程模型,當你新接觸一門語言的時候,有些問題是需...
摘要:第層網絡的一個值得注意的示例是以太網,其中表示為子層。與其他方案相比,相對容易安裝和配置。與不同,不使用網絡。網絡策略是其最受追捧的功能之一。 本文將在介紹技術原理和相應術語的基礎上,再集中探索與詳細對比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,對比介紹它們的原理、使用方法、適用場景和優缺點等。 showImg(https://segmentfaul...
閱讀 2171·2020-06-12 14:26
閱讀 2477·2019-08-29 16:41
閱讀 1885·2019-08-29 15:28
閱讀 2448·2019-08-26 13:43
閱讀 753·2019-08-26 13:37
閱讀 2773·2019-08-23 18:13
閱讀 2791·2019-08-23 15:31
閱讀 1014·2019-08-23 14:10