簡體   English   中英

使用Python進行網絡編程-TCP客戶端/服務器

[英]Network programming with Python - TCP client/server

我目前正在學習與Python聯網的知識,並創建了一個簡單的TCP服務器和客戶端。 客戶端和服務器連接正常,但是,當我運行客戶端腳本並從提示符下輸入內容時,對於輸入的內容,我會收到NameError異常。 情況並非如此,因為輸入應該由標識符( data )引用。

我已經看過代碼,但似乎找不到問題。 請在下面查看客戶端和服務器代碼:

客戶端腳本:

#!/usr/bin/env python
from socket import *
from time import ctime

HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)

while True:
    data = input('> ')
    if not data:break
    tcpCliSock.send(data)
    data = tcpCliSock.recv(BUFSIZ)
    if not data:break
    print(data.decode('utf-8'))
tcpCliSock.close()

服務器腳本:

from socket import *    
from time import ctime

HOST = ""
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
    print("waiting for a connection.....")
    tcpCliSock, addr= tcpSerSock.accept()
    print("....connected from:", addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:break
        tcpCliSock.send(bytes('[%s] %s' % (ctime(), 'utf-8'), data))
    tcpCliSock.close()
tcpSerSock.close()

非常感謝!

您在客戶端腳本中使用的內置input將用戶的輸入評估為Python代碼(這是生成NameError的原因)。 改用raw_input可以簡單地從用戶那里獲取文本輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM