gpt4 book ai didi

Python 套接字使用函数而不是全局套接字调用

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:21 25 4
gpt4 key购买 nike

你好,我正在尝试将一些 C 代码移植到 python 中。我已经几个月没有使用Python了,感觉有点生疏了。

想知道我该如何做到这一点。我需要能够在 createConnection 函数中使用 sock 对象的发送值,而不需要使 sock 对象成为全局的。

有什么想法吗?

*干杯

示例代码

def createConnection(host, port, tcpTimeout):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
sock.connect((host, port))
return sock

def useConnectionOne():
sock = createConnection("<Some IP>", <Some Port>, 5)
sock.send("Hello world")

def useConnectionTwo():
sock = createConnection("<Some IP>", <Some Port>, 5)
sock.send("Hello again world")

最佳答案

您要么需要使套接字对象成为全局的,以便可以重复使用它们,要么将它们附加到其他对象/容器以跟踪它们。你可以这样做:

Connections = {}
Connections['host1'] = createConnection("<Some IP>", <Some Port>, 5)
Connections['host2'] = createConnection("<Some Other IP>", <Some Port>, 5)

然后您可以发送:

Connections['host1'].send("Hello World")

如果没有一些外部容器,您的套接字对象就会离开作用域,并在创建它们的函数返回时被垃圾收集。

如果我以某种方式误解了您,并且您想要一个连接对象并且能够编写两个单独使用它的方法,请创建一个包含连接的类:

class ConnManager(object):
def __init__(self, host, port, timeout)
self._conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
self._conn.connect((host, port))

def sendOne(self, data):
self._conn.send(data)

def sendTwo(self, data):
self._conn.send(data)

希望这能给您一个可以借鉴的想法。

关于Python 套接字使用函数而不是全局套接字调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569044/

25 4 0
文章推荐: c# - 使用 System.Media.SoundPlayer 播放 Windows 系统声音
文章推荐: css - Liferay Css 用户状态
文章推荐: javascript -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com