python-網路編程-03

來源:互聯網
上載者:User

標籤:用戶端程式   hand   接收   object   socket   使用者   inpu   python   客戶   

首先我們可以看下可以最簡單的互動性的服務端和用戶端程式

server

import socketdef main():    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    sock.bind((‘localhost‘,8000))    sock.listen(5)    while True:        print ‘1‘        connection ,clent_addr = sock.accept()        while 1:            buf = connection.recv(1024)            connection.sendall(‘hi‘)            print buf    connection.close()if __name__ == ‘__main__‘:    main()

[server]:在建立socket之後,服務端會一直保持阻塞狀態,然後一旦有使用者串連,就立即等待使用者發送資料,然後接收到使用者發的資料之後 理解返回一個字元後,然後狀態變成等待下次串連

client

import socketsock = socket.socket()sock.connect((‘localhost‘, 8000))sock.settimeout(5)while 1:    res = sock.recv(1024)    print res    data = raw_input(‘input:‘)    sock.sendall(data)sock.close()

[client]:去串連server端然後不斷髮送資料,然後接受返回。

-------------------------------------------------------------------------------

那麼你可以發現上面的server端的代碼 其實只能同時接受一個請求,因為只有一個線程去處理這個段代碼

那麼我可以吧server端的代碼換成

import SocketServerclass MyServer(SocketServer.BaseRequestHandler,object):    def handle(self):        conn = self.request        conn.sendall(‘this is a tast‘)        Flag = True        while Flag:            data = conn.recv(1024)            print "data:",data            if data == "exit":                Flag = True            elif data == ‘0‘:                conn.sendall("The winter in comming")            else:                conn.sendall("please input again")if __name__ == "__main__":    server01 = SocketServer.ThreadingTCPServer((‘127.0.0.1‘,8080),MyServer)    print "server is running.."    server01.serve_forever()

我們通過藉助socket內建的類寫出來了 多線程的伺服器端,能夠收發訊息

 

python-網路編程-03

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.