gpt4 book ai didi

python - TCP客户端如何连接到服务器并发送到服务器端?获取错误并且无法成功运行代码。

转载 作者:可可西里 更新时间:2023-11-01 02:45:58 25 4
gpt4 key购买 nike

我正在学习 TCP 并正在试用客户端/服务器程序。我的服务器端工作正常,但在我的客户端,我无法成功连接到服务器端。

我客户端的错误代码

第一个错误:

追溯(最近的调用最后): 文件“tcpclient.py”,第 13 行,位于 clientSocket.connect((serverName, serverPort))TypeError: 应为 str、bytes 或 bytearray,而不是列表

第二个错误:

追溯(最近的调用最后): 文件“tcpclient.py”,第 34 行,位于 clientSocket.send(clientSentence.encode(), serverAddress)类型错误:需要一个整数(得到类型元组)

服务器代码:此代码运行成功。

import sys
from socket import*

serverSocket = socket(AF_INET, SOCK_STREAM)
serversys = sys.argv

if len(serversys) == 1:
serverPort = 9999
else:
serverPort = serversys[1]
serverPort = int(serverPort)

serverSocket.bind(('', serverPort))
serverSocket.listen(1)
print ("The server is ready to receive.")

while True:
connectionSocket, addr = serverSocket.accept()
print ("Connection accepted from: ", addr)

clientSentence = connectionSocket.recv(1024).decode()


clientSentence, clientAddress = serverSockset.recv(1024)
clientSentence.decode()
connectionSocket.close()

if clientSentence[0].decode() == 'U':
serverSentence = clientSentence.upper()
connectionSocket.send(serverSentence[1:].encode(), clientAddress)
connectionSocket.close()
elif clientSentence[0].decode() == 'L':
serverSentence = clientSentence.lower()
connectionSocket.send(serverSentence[1:].encode(), clientAddress)
connectionSocket.close()
elif clientSentence[0].decode() == 'I':
serverSentence = clientSentence.title()
connectionSocket.send(serverSentence[1:].encode(), clientAddress)
connectionSocket.close()

客户端:这是两个错误发生的地方。

import sys
from socket import*

clientSocket = socket(AF_INET, SOCK_STREAM)

clientsys = sys.argv
serverName = clientsys[1:]
serverPort = clientsys[2:]

clientSocket.connect((serverName, serverPort)) #First Error

serverPort = [int(serverPort) for serverPort in serverPort]
serverAddress = (serverName, serverPort)

sentenceChoice = input("Enter U for UPPERCASE SENTENCE, L for lowercase sentence, \nor I for Initial Caps Sentence: ")
sentence = input("Enter sentence: ")

clientSentence = sentenceChoice+sentence

clientSocket.send(clientSentence.encode(), serverAddress) #Second Error
serverSentence = clientSocket.recv(1024)
print('From Server: ', serverSentence.decode())
clientSocket.close()

最佳答案

您的第一个错误是由于您对服务器名称和端口使用列表切片引起的。更改为:

serverName = clientsys[1]
serverPort = clientsys[2]

你的第二个错误是因为 socket.send() 不接受 serverAddress 元组参数(你想到的是 socket.sendto()? 无论哪种方式,您都可以通过简单地删除参数来修复:

clientSocket.send(clientSentence.encode())

socket.send 文档链接:https://docs.python.org/3/library/socket.html#socket.socket.send

关于python - TCP客户端如何连接到服务器并发送到服务器端?获取错误并且无法成功运行代码。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com