python如何格式化socket recv()输出?

2024-09-24 15:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

此函数用于打印socket recv()的输出。在我的代码中,插座连接到三星电视。在

def connection_status(self):

        connection_status = sock.recv(64)
        label_connection_status = "Status: ", connection_status

        label_connection_status = Label(self.master, text= label_connection_status)
        label_connection_status.grid(row=7, column=3, columnspan=4, padx=(15,0), ipady=8, sticky=W)

标签显示的是:Screenshot of label

print("Status: ", connection_status)我得到这个:('Status: ', '\x00\x0c\x00iapp.samsung\x04\x00d\x00\x01\x00')

print(label_connection_status)我得到这个:.139719774023552

我的问题是:

  1. 如何格式化输出,为什么输出是print(label_connection_status).139719774023552??

  2. 如果recv()返回某个值,我想在标签中写下“Status:Connected”,如果recv()返回“”(不要返回anythink)

  3. 我想每隔1秒用recv()更新连接状态

请帮帮我!为我糟糕的英语道歉。 谢谢您。在


Tags: 函数代码selfdefstatus标签socketconnection
1条回答
网友
1楼 · 发布于 2024-09-24 15:32:47

至于第二和第三个问题,你可以做一些类似的事情: 套接字设置超时(一)

try:
    data = sock.recv(64)
    print 'Status: Connected'
except socket.timeout:
    data = ''
    print 'Statuc: Disconnected'

其中,您将超时设置为1秒,如果连接超时,它将打印断开连接。在

至于标签,标签是Tkinter的,对吗?如果我没记错的话,这个数字代表你的tkinter窗口(每个窗口和窗口的子窗口都会得到数字,在操作系统中代表它们)。我不记得具体是怎么回事,但我很确定你就是这样。如果需要标签的文本,则应使用label_name[“text”]或label_名称.cget(“文本”)。在

要回答您的后续问题,下面是代码,请将此部分放在init函数中

^{pr2}$

(别忘了更改ip和端口) 下面是您需要的功能:

def connection_status(self):
    try:
        data = self.sock.recv(64)
        self.connection_label['text'] = 'Status: Connected'
    except socket.timeout:
        data = ''
        self.connection_label['text'] = 'Status: Disconnected'
    #This makes the program call this every 1000 milliseconds
    self.master.after(1000, self.connection_status, self.master)

底部的一行每x毫秒调用一次函数,在这个例子中是1000秒。也不要忘记在init函数中实际调用函数connection_status。在

相关问题 更多 >