Python3.4套接字未收到完整消息

2024-10-05 10:58:51 发布

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

我正在编程一个机器人来监控聊天抽搐电视通过IRC。以下是在Telnet中成功连接和登录的情况:

Microsoft Telnet> o irc.twitch.tv 6667
PASS <password>
NICK <username>
:tmi.twitch.tv 001 <user> :Welcome, GLHF!
:tmi.twitch.tv 002 <user> :Your host is tmi.twitch.tv
:tmi.twitch.tv 003 <user> :This server is rather new
:tmi.twitch.tv 004 <user> :-
:tmi.twitch.tv 375 <user> :-
:tmi.twitch.tv 372 <user> :You are in a maze of twisty passages, all alike.
:tmi.twitch.tv 376 <user> :>

我编写了一个简单的测试脚本,它成功地连接到服务器,但只接收部分消息。在

^{pr2}$

data.decode()打印的字符串只是成功连接响应的第一行:

':tmi.twitch.tv 001 <user> :Welcome, GLHF!\r\n'

这意味着连接按预期工作。我试着再做一次s.recv(2048),但这会无限期地挂起s.settimeout(None)。我也尝试过增加缓冲区的大小,但似乎没有任何效果。有人知道怎么回事吗?在

Twitch有一个关于IRC连接的帮助文档here。在


Tags: isirc编程情况机器人tvmicrosofttelnet
1条回答
网友
1楼 · 发布于 2024-10-05 10:58:51

我想你应该这样做:

import socket

HOST='irc.twitch.tv'
PORT=6667

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(None)
s.connect((HOST, PORT))
s.sendall(b"PASS oauth:...")
s.sendall(b"USER ...")
s.sendall(b"NICK ...")
s.sendall(b"JOIN ...")

while True:
    data = irc.recv(1204)
    if data.find('PING') != -1:
        irc.send(data.replace('PING', 'PONG'))
    print(repr(data.decode()))

此问题的代码: IRC bot in python won't send messages

相关问题 更多 >

    热门问题