国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python-socket網(wǎng)絡(luò)編程

zero / 2860人閱讀

摘要:網(wǎng)絡(luò)編程學(xué)習(xí)本文主要介紹網(wǎng)絡(luò)通信,以及的通信例子網(wǎng)絡(luò)通信是嵌套字的意思,可以理解為與們間的在線會話。關(guān)于通信可以看這里簡單理解多線程下開啟一個對于服務(wù)端,需要做件事情開啟設(shè)置配置綁定端口幀監(jiān)聽,收發(fā)包多線程關(guān)于報錯模塊提供個函數(shù)。

  

http://homeway.me/


python網(wǎng)絡(luò)編程學(xué)習(xí) 本文主要介紹socket網(wǎng)絡(luò)通信,以及python的socket通信例子


0x01.socket網(wǎng)絡(luò)通信

socket是嵌套字的意思,可以理解為server與client們間的在線會話。



關(guān)于socket通信可以看這里:

http://queengina.com/2014/10/09/簡單理解Socket/




0x02.多線程socket


python下開啟一個socket

對于server服務(wù)端,python socket需要做4件事情

1.開啟socket

2.設(shè)置配置socket

3.綁定端口

4.幀監(jiān)聽,收發(fā)包


多線程socket
  

=> 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


關(guān)于報錯

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







本文出自 夏日小草,轉(zhuǎn)載請注明出處: http://homeway.me/2014/10/21/python-socket-1/


-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

相關(guān)文章

  • App網(wǎng)絡(luò)管理

    摘要:安卓開發(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...

    only_do 評論0 收藏0
  • 編程模型(范式)小結(jié)

    摘要:參考鏈接面向?qū)ο缶幊棠P同F(xiàn)在的很多編程語言基本都具有面向?qū)ο蟮乃枷耄热绲鹊龋嫦驅(qū)ο蟮闹饕枷雽ο螅悾^承,封裝,多態(tài)比較容易理解,這里就不多多描述了。 前言 在我們的日常日發(fā)和學(xué)習(xí)生活中會常常遇到一些名詞,比如 命令式編程模型,聲明式編程模型,xxx語言是面向?qū)ο蟮牡鹊龋@個編程模型到處可見,但是始終搞不清是什么?什么語言又是什么編程模型,當(dāng)你新接觸一門語言的時候,有些問題是需...

    miya 評論0 收藏0
  • Kubernetes CNI網(wǎng)絡(luò)最強對比:Flannel、Calico、Canal和Weave

    摘要:第層網(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...

    scq000 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<