python socket   編程之一(練習)

    今天不算忙,難得有時間閒下來瞭解一下socket的通信機制原理,順便寫一個簡單的案例,以方便後期學習,積累。

wKioL1fg7D3gGU5tAAGSqLgLAw0546.jpg-wh_50

一、服務端綁定一個端口號、並處於監聽狀態。用accept()接收發來的數據請求:

二、客戶端通過地址和端口號連接服務端,併發送數據請求。

三、服務端收到後,處理請求,併發請求發給客戶端。如何客戶端還在連接請求,那麼就循環操作。

四、客戶端處理完數據之後,發送關閉請求,服務端收到請求後也開始關閉連接。

以上簡介來自51cto博友分享



服務端代碼

server_m.py

#!/usr/bin/env python

#-*-coding:utf-8-*-

import SocketServer          

class myMonitorHandler(SocketServer.BaseRequestHandler):

        def handle(self):

                recv_data = self.request.recv(1024) ##定義接收到的數據大小

                print "From 客戶端 %s : %s" % (self.client_address,recv_data)

if __name__ == "__main__":

        host,port = '',5000   #接收來自任意客戶端IP,指定port爲5000的數據

        server = SocketServer.ThreadingTCPServer((host,port),myMonitorHandler)

        server.serve_forever()

~        

客戶端代碼                       

client_m.py

import socket

name = socket.gethostname()  #隨意定義,這裏爲獲取本機主機名

host, port = "192.168.101.52",5000      #指定server ip和port 推送數據

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #指定傳輸的數據類型和結構。

s.connect((host,port))   #鏈接以上指定的主機端口

s.sendall(name)  #將獲取到的變量name值傳送到服務端

s.close()        #關閉請求鏈接

~               


測試:

先啓動服務器端#python m_server.py

後啓動客戶端#python m_client.py

備註:如果先啓動客戶端,客戶端鏈接不到服務端會拋出異常

socket.error: [Errno 111] Connection refused

test result:

wKioL1fg7tGAIFRUAAByo3wWuqY301.jpg-wh_50



可以任意將變量name作爲一個變量參數傳入 比如命令  df -h   free -m 等等




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章