【问题标题】:Python2.7 vs Python3.4 socket.send [duplicate]Python2.7 vs Python3.4 socket.send [重复]
【发布时间】:2016-09-08 15:39:17
【问题描述】:

我有以下 python 套接字客户端。它将一条小消息发送到套接字服务器。在 Python2.7 中,这可以正常工作。但是在 3.4 中,我得到了以下 Traceback。实施是否发生了变化?我应该采用什么方法进行调试?

Traceback (most recent call last):
  File "echo-client.py", line 19, in <module>
    sockobj.send(line)
TypeError: 'str' does not support the buffer interface

import sys
from socket import *


_server = 'localhost'
_port = 50007

message = ['Hello network world']

if len(sys.argv) > 1:
    _server = sys.argv[1]
    if len(sys.argv) > 2:
        _port = sys.argv[2]

sockobj = socket(AF_INET, SOCK_STREAM)
sockobj.connect((_server, _port))

for line in message:
    sockobj.send(line)
    data = sockobj.recv(1024)
    print('Client received: {}'.format(data))

sockobj.close()

【问题讨论】:

    标签: python sockets


    【解决方案1】:

    改变

    sockobj.send(line)
    

    sockobj.send(line.encode())
    

    在 Python 3.x 中,send 适用于 bytes 而不是 str。或者我们可以说,Python 3.x 正确地(我的观点)不再强制 str -&gt; bytes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2014-11-13
      • 2023-04-01
      • 2018-06-23
      • 1970-01-01
      • 2017-02-23
      相关资源
      最近更新 更多