python socket伺服器與裝置通訊

2021-10-07 13:05:39 字數 2003 閱讀 2031

首先建立兩份**,乙份執行於伺服器,乙份執行於裝置端

**參考:

裝置端

from socket import *

host = '149.28.159.155' # 指定客戶端訪問host

port = 21567

bufsiz = 1024

addr = (host, port)

tcpclisock = socket(af_inet, sock_stream)

tcpclisock.connect(addr) # 連線位址

while true:

# 使用者輸入資料(str型別)

data = input('> ')

if not data:

break

# 將資料進行編碼,再通過send()方法傳送給之前繫結的位址伺服器

tcpclisock.send(data.encode('utf8'))

# 接收伺服器返回的資料(bytes型別),解碼為字串型別

data = tcpclisock.recv(bufsiz).decode('utf8')

if not data:

break

# 列印字串

print(data)

# 關閉客戶端,斷開連線

tcpclisock.close()

伺服器端:

from socket import *

from time import ctime

host = '' # 允許任意host接入

port = 21567

bufsiz = 1024

addr = (host, port)

tcpsersock = socket(af_inet, sock_stream)

tcpsersock.bind(addr) # 繫結位址

tcpsersock.listen(5) # 最多同時監聽數量上限為5

while true:

print('waiting for connection...')

# 接受客戶端請求之前保持阻塞,連線後獲取客戶端socket及其位址

tcpclisock, addr = tcpsersock.accept()

# 列印請求此次服務的客戶端的位址

print('...connection from: {}'.format(addr))

while true:

# 通過客戶socket獲取客戶端資訊(bytes型別),並解碼為字串型別

data = tcpclisock.recv(bufsiz).decode('utf8')

if not data:

break

print(data)

# 處理字串並重新編碼為bytes型別,呼叫send()方法傳送回客戶端

tcpclisock.send('[{}] {}'.format(ctime(), data).encode('utf8'))

send = 'jun test'

tcpclisock.send(send.encode('utf8'))

# 關閉客戶端

tcpclisock.close()

# 關閉伺服器

tcpclisock.close()

執行,有先後順序,先執行伺服器,再執行裝置端

裝置已連線

裝置發資料給伺服器,伺服器再返回給裝置

python socket 實現伺服器 客戶端通訊

伺服器 usr env bin python coding utf 8 import socket server def server sock socket.socket socket.af inet,socket.sock stream sock.bind localhost 8000 sock...

Python socket實現伺服器端與客戶端連線

伺服器端與客戶端每個5秒鐘通訊一次,具體實現如下 伺服器端 usr bin python coding utf 8 檔名 server.py import socket 匯入 socket 模組 import time s socket.socket 建立 socket 物件 host socket...

python socket伺服器端一直接收空字串

我最開始是這樣構想的,如果客戶端傳送88的訊息,那麼直接關閉伺服器端的訊息,但是陰差陽錯,c 客戶端的 寫錯了,就看到了這個現象,那就是如果客戶端socket 關閉的話,伺服器端會一直接收到空訊息 最初的 是這樣的 python服務端 coding utf 8 使用utf 8編碼 coding ut...