python socket 開發

  • socket 服務端開發
#socket 服務端開發
import socket

# 創建socket 對象
socket_server = socket.socket()
# 綁定ip 地址和端口
socket_server.bind(("localhost",8888))
# 監聽端口
socket_server.listen(1)
# listen 方法內接收一個整數參數,表示接收的連接數量
#等待客戶端連接
conn,address = socket_server.accept()
# accept()方法返回的是二元元組(連接對象,客戶端地址信息)
# 可以通過 變量1,變量2 = socket_server.accept()的形式,直接接收二元元組內的兩個元素
# accept()方法,是阻塞的方法,等待客戶端的連接,如果沒有連接,就卡在這一行不向下執行了
print(f"我接收到了客戶端的連接,客戶端的信息是: {address}")

while True:
    #接收客戶端信息,要使用客戶端和服務器的本次連接對象,而非socket_server 對象
    data = conn.recv(1024).decode("gbk")
    #recv 接收的參數是緩衝區大小,一般給1024 即可
    #recv方法的返回值是一個字節數組也是 bytest 對象,不是字符串,可以通過decode 方法通過UTF-8 編碼,將字節數組轉換爲字符串對象
    print(f"客戶端發來的信息是: {data}")
    #發送回覆信息
    msg = input("請輸入你要和客戶端回覆的消息:")
    if msg == "exit":
        break
    conn.send(msg.encode("gbk"))
#關閉連接
conn.close()
socket_server.close()

  • socket 客戶端開發
"""
socket客戶端開發
"""
import socket

# 創建socket 對象
socket_client = socket.socket()

# 連接到服務器
socket_client.connect(("localhost",8888))

while True:
    #發送消息
    msg = input("請輸入要給服務段發送的信息: ")
    if msg == "exit":
        break
    socket_client.send(msg.encode("gbk"))

    #接收返回消息
    recv_data = socket_client.recv(1024)
    print(f"服務端回覆的消息是: {recv_data.decode('gbk')}")
# 關閉連接
socket_client.close()



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