【问题标题】:send multiple headers python socket?发送多个标头python套接字?
【发布时间】:2012-11-19 02:14:34
【问题描述】:

所以,假设我在 python 中创建了一个 TCP 套接字,而我授权的服务器需要一次发送多个标头来进行授权,我该怎么做呢?因为我要使用socket.sendall 发送它们,然后等待授权握手回复。之后,我需要它等待数据回复,直到它得到一个,我该怎么做呢,因为如果在设定的时间内没有收到数据,它不会关闭套接字吗?有没有一些简单的方法可以正确发送这个或什么? ~~编辑~~ 我想我的主要问题是如何发送多行数据包? :)

【问题讨论】:

  • 您能说得更具体些吗?也许您可以包括您正在使用的协议?没有像套接字级别这样的“标头”,只有传入和传出数据。关于如果没有接收到数据,套接字是否会关闭,情况并非如此,TCP 套接字可以保持打开非常长时间。
  • 好吧,让我们说服务器即时发送也需要一个长度和一个消息 id 标头发送,通过 tcp 套接字,我将如何发送多行消息?
  • 如果您使用的是面向行的 TCP 协议,只需在您发送的字符串中添加换行符:your_socket.send( "line 1\nline 2" )

标签: python sockets networking tcp


【解决方案1】:

SOCK_STREAM 类型的 python 套接字,使用 socket.sendall(data) 函数只是发送一个字符串。是的,数据只是一个字符串。现在,您可以构建自己的标题和行以及所有内容并将其放入字符串中并告诉套接字将其全部发送到服务器。

然后只需执行 socket.recv(buffer) ,其中 buffer 是字节数的整数。正如 Thomas Orozco 所说,tcp 套接字可以保持打开很长时间,因此请确保服务器给出相当及时的回复。

编辑:顺便说一句,TCP 是一种传输层协议,您可以在这里阅读更多内容:http://en.wikipedia.org/wiki/Transport_layer。简而言之,TCP 将传输您告诉它传输的任何内容。在 python 中,它是字符串。

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 2016-09-12
    • 2018-07-09
    • 2021-11-09
    • 2015-01-22
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多