python3.6下 socket 實現客戶端和服務端的連接

python3.6下
服務器端代碼爲

#coding:utf-8

from socket import *
from time import ctime

print("=====================時間戳TCP服務器=====================");

HOST = '127.0.0.1'  #主機號爲空白表示可以使用任何可用的地址。
PORT = 21567  #端口號
BUFSIZ = 1024  #接收數據緩衝大小
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM) #創建TCP服務器套接字
tcpSerSock.bind(ADDR)  #套接字與地址綁定
tcpSerSock.listen(5) #監聽連接,同時連接請求的最大數目

while True:
    print('等待客戶端的連接...')
    tcpCliSock, addr = tcpSerSock.accept()   #接收客戶端連接請求
    print('取得連接:', addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)  #連續接收指定字節的數據,接收到的是字節數組
        if not data:  #如果數據空白,則表示客戶端退出,所以退出接收
            break
        #tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data))
        tcpCliSock.send(bytes('[%s] %s' % (ctime(), data.decode('utf-8')), 'utf-8')) #向客戶端發送時間戳數據,必須發送字節數組

    tcpCliSock.close()  #關閉與客戶端的連接
tcpSerSock.close()  #關閉服務器socket

客戶端代碼爲

#coding:utf-8

from socket import *

print("=====================TCP客戶端=====================");

HOST = '127.0.0.1'  #服務器ip地址,等價於localhost
PORT = 21567  #通信端口號
BUFSIZ = 1024  #接收數據緩衝大小
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)  #創建客戶端套接字
tcpCliSock.connect(ADDR)  #發起TCP連接

while True:
    data = input('> ')   #接收用戶輸入
    if not data:  #如果用戶輸入爲空,直接回車就會發送"",""就是代表false
        break
    tcpCliSock.send(bytes(data, 'utf-8'))   #客戶端發送消息,必須發送字節數組
    data = tcpCliSock.recv(BUFSIZ)   #接收回應消息,接收到的是字節數組
    if not data:   #如果接收服務器信息失敗,或沒有消息迴應
        break
    print(data.decode('utf-8'))  #打印迴應消息,或者str(data,"utf-8")

tcpCliSock.close() #關閉客戶端socket
 

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