相关疑难解决方法(0)

绑定多播(UDP)套接字是什么意思?

我在具有多个网络接口的主机之间使用多播UDP.我正在使用boost :: asio,并且被接收器必须进行的2个操作混淆:bind,然后是join-group.

当您对加入的每个组播组执行此操作时,为什么需要在绑定期间指定接口的本地地址?

姐妹问题是关于多播端口:因为在发送期间,您发送到多播地址和端口,为什么在订阅多播组期间,您只需指定地址,而不是端口 - 在混乱的呼叫中指定的端口绑定.

注意:"join-group"是一个包装器setsockopt(IP_ADD_MEMBERSHIP),如文档所示,可以在同一个套接字上多次调用以订阅不同的组(通过不同的网络?).因此,每次订阅组时,抛弃绑定调用并指定端口是完全合理的.

从我所看到的,总是绑定到"0.0.0.0"并在加入组时指定接口地址,效果非常好.困惑.

sockets udp bind multicast boost-asio

65
推荐指数
4
解决办法
10万
查看次数

Python套接字错误TypeError:需要一个类似字节的对象,而不是带有send函数的'str'

我正在尝试创建一个程序,它将在本地计算机上打开一个端口,让其他人通过netcat连接到它.我目前的代码是.

s = socket.socket()
host = '127.0.0.1'
port = 12345
s.bind((host, port))

s.listen(5)
while True:
    c, addr = s.accept()
    print('Got connection from', addr)
    c.send('Thank you for connecting')
    c.close()
Run Code Online (Sandbox Code Playgroud)

我是Python和套接字的新手.但是当我运行此代码时,它将允许我使用命令发送netcat连接:

nc 127.0.0.1 12345
Run Code Online (Sandbox Code Playgroud)

但是在我的Python脚本上,我得到了c.send的错误:

TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

我基本上只是试图打开一个端口,允许netcat连接并在该机器上有一个完整的shell.

python python-3.x

20
推荐指数
3
解决办法
11万
查看次数

如何在Python中指定多播SEND接口?

有很多使用特定网络接口(NIC,例如eth0、127.0.0.1等)来接收多播消息的示例。但是,关于如何将多播(UDP)消息发送到特定接口的讨论/示例很少,例如默认情况下是本地循环(127.0.0.1)而不是eth0。

背景:RedHat Linux,Python,224.1.1.1 5005

Python 组播中的Python代码示例

关于IPv6的类似讨论 如何在Linux中通过特定接口发送多播数据包

Windows的类似讨论 如何向第一个NIC组播(发送)?

提前致谢。

python linux multicast ipv4

5
推荐指数
1
解决办法
3334
查看次数

将命令从命令行发送到Unix中正在运行的Python脚本

我想构建一个可以在从另一个脚本运行时控制的脚本.例如,我想像这样运行我的脚本:

~: Server &
Run Code Online (Sandbox Code Playgroud)

并能够运行其中一个功能,如:

~: client func1
Run Code Online (Sandbox Code Playgroud)

在我搜索时,我发现信号模块有我想要的东西,但它的信号是预先定义的,我无法发送自己的信号.

我即使使用网络框架进行客户端/服务器实现,但我认为这对于我希望我的脚本具有的能力来说太过分了.

谢谢你们.

python unix client-server

4
推荐指数
1
解决办法
7322
查看次数

标签 统计

python ×3

multicast ×2

bind ×1

boost-asio ×1

client-server ×1

ipv4 ×1

linux ×1

python-3.x ×1

sockets ×1

udp ×1

unix ×1