Python連載52-SOCKET編程示例

1、UDP編程git

1.客戶端Client:發起訪問的一方。github

2.服務器端編程

3.server段編程服務器

(1)創建socket,socket是負責具體通訊的一個實例微信

(2)綁定,爲建立的socket指派固定的端口和IP地址socket

(3)接受對方發送內容函數

(4)給對方發送反饋,此步驟爲非必須步驟學習

4.Client端編程測試

(1)創建通訊的socket大數據

(2)發送內容到指定服務器

(3)接受服務器給定的反饋內容

5.模擬一下這個過程

(1)咱們先創建一個服務器的函數

 

#服務器案例

import socket

​

#模擬服務器的函數

def serverFunc():

    #1.創建socket

    #socket.AF_INET:使用IPV4協議族

    #socket.SOCK_DGRAM:使用UDP通訊

    sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    #2.綁定ip和port
#127.0.01:這個ip地址表明的是機器自己

    #7852:隨機指定的端口號

    #地址是一個tuple類型,(ip.port)

    addr = ("127.0.0.1",7852)

    sock.bind(addr)

​

    #接受對方消息

    #等待方式爲死等,沒有其餘可能性

    #recvfrom接受的返回值是一個元組,前一項表示數據,後一項表示地址

    #參數的含義是緩衝區大小

    #rst = sock.recvfrom(500)

    data,addr = sock.recvfrom(500)

​

    print(data)

    print(type(data))

​

    #發送過來的數據是bytes格式,必須經過解碼才能獲得str格式內容

    #decode默認參數是utf8

    text = data.decode()

    print(type(text))

    print(text)

​

    #給對方反饋的消息

    rsp = "I am very hungry now"#發送的數據須要編程成bytes格式

    #默認時utf8

    data = rsp.encode()

    sock.sendto(data,addr)

   

if __name__ == "__main__":

    print("Start Server")

    serverFunc()

print("End Server")

 

 

(2)而後建立一個客戶端的函數

 

import socket

def clientFunc():

    sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    text = "you are very cool"#發送的數據必須是bytes格式

    data = text.encode()

    #發送

    sock.sendto(data,("127.0.0.1",7852))

    data,addr =sock.recvfrom(200)

​

    data = data.decode()

    print(text)

​

if __name__ == "__main__":

    print("Start Client")

    clientFunc()

print("End Client")

 

 

(3)咱們先啓動服務器端函數

出現以下圖像,它是建立了一個sock,而後本身綁定到127.0.0.1:7852,運行到sock.recvfrom(500)這裏死等客戶端發消息

 


(4)再啓動客戶端函數

出現以下發送編碼後的​text內容到服務器(127.0.0.1:7852),服務器成功接收後返回you are cool這句話。

 

 

(5)咱們再看服務器的函數那裏

接受了bytes格式的字符串,並打印出來了,而後再解碼打印出來,最後把you are cool返回​客戶端。

 

 

(6)這裏有個地方沒有辦法:由於咱們在一臺電腦上作的測試,因此至關於自言自語,​不如在兩臺電腦上進行試驗。​

2、源碼

D33_1_ServerProgramme.py

D33_2_ClientProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D33_1_ServerProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D33_2_ClientProgramme.py

2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索