python - 在 Python Socket 上通过 TCP 将 txt 文件发送到服务器
问题描述
我正在尝试.txt
通过 TCP 将文件从客户端发送到服务器。服务器应该能够计算文本文件的单词和字符。
但是在将文本文件发送到服务器时出现错误:
"CLIENT_SOCKET.sendto(str(FILENAME).encode(4096)), (SERVER_HOST, SERVER_PORT)
TypeError: encode() argument 'encoding' must be str, not int"
我真的不明白错误是如何发生的。
import socket // This is the client
SERVER_HOST = '127.0.0.1'
SERVER_PORT = 54321
CLIENT_SOCKET = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
CLIENT_SOCKET.connect((SERVER_HOST, SERVER_PORT))
FILENAME = input(str("What file would you like to upload?"))
f = open(FILENAME, "r")
FILE_DATA = f.read(4096)
f.close()
print(FILENAME)
CLIENT_SOCKET.sendto(str(FILENAME).encode(4096)), (SERVER_HOST, SERVER_PORT)
RECEIVED_WORDS, SERVER_HOST = CLIENT_SOCKET.recvfrom(4096)
RECEIVED_CHAR, SERVER_HOST = CLIENT_SOCKET.recvfrom(4096)
print(RECEIVED_WORDS.decode())
print(RECEIVED_CHAR.decode())
CLIENT_SOCKET.close()
解决方案
在CLIENT_SOCKET.sendto(str(FILENAME).encode(4096)), (SERVER_HOST, SERVER_PORT)
您将参数4096
(整数)传递给encode
需要字符串的方法时。
基于您发送文本的事实,我建议您使用 utf-8 编码,以下是如何执行此操作的示例:
CLIENT_SOCKET.sendto(str(FILENAME).encode('utf-8')), (SERVER_HOST, SERVER_PORT)
有关如何使用 python 字符串编码以及可以传递给的各种可能值的详细信息,请参见此处encode
推荐阅读
- java - 在 JavaFX 应用程序中设置和获取参数
- tensorflow - Tensorboard for Windows for Tensorflowsharp
- python - 在python中将对象类型初始化为相应的空值
- arrays - 在 PowerShell 中,针对大型数组的批量正则表达式删除速度非常慢
- antlr - Antlr 语法与预期的词法分析器规则不匹配
- docker - docker start 和 docker container start 有什么区别吗?
- excel - 按记录将 Access 查询结果导出到文件中的新工作表
- angular - angular 6 material2 mat-table MatRipple 错误
- android - OkHttp 忽略日志拦截器
- javascript - 方法名(arg) {} ≠ 方法名 = arg =>{}