2016-09-17 103 views
-2

所以我用C++写一个IRC bot,我写我自己发送功能Winsock发送功能不发送

int Send(char* MessageToSend) { 
    initResult = send(bobSocket, MessageToSend, (int)strlen(MessageToSend), 0); 
    if (initResult == SOCKET_ERROR) { 
     printf("send failed: %d\n", WSAGetLastError()); 
     closesocket(bobSocket); 
     WSACleanup(); 
     return 1; 
    } 
} 

,每当我用它在我的SendMessage函数(循环检查的消息,然后运行所有输入发送)一种像这样

while(1 > 0) { 
string b; 
cin >> b; 
char* INPUT = const_cast<char*>(b.c_str()); 
Send(b); 
} 

但是当我把PRIVMSG ##路:测试到控制台,我没有看到其他客户端上的任何东西,那么,有谁能够像帮助?我对于stackoverflow和C++相当陌生,因此非常感谢任何反馈。

+0

因此,它打印发送失败的消息?或不?而bobSocket是一个有效的,正确连接的插座? –

+0

@JasonC不,它不会打印失败的消息,而bobSocket是一个有效的,连接正确的套接字,它连接到IRC寄存器nick并加入我想要的通道,但输入只是不会发送到IRC服务器。 – newuser9282928292

+0

你确定它没有发送给服务器吗?难道它只是没有正确的格式?如果你正在设法连接到服务器,并加入一个房间,我的投注将是你发送格式错误的命令。 –

回答

1

如果send()对于PRIVMSG ##channel :hello返回7,9,7,则表示您发送三条不同发送中的一条线,并且失去内部空间并发送尾随换行符。所以问题可能是你错误地解析了输入。你实际发送的是:

PRIVMSG (7 bytes) 
##channel (9 bytes) 
:hello\n (7 bytes) 

并再次注意到你已经失去了内部空间。

我相信你应该从控制台读取行,而不是单词。

请注意,我将以'if'开始此答案,因为您对评论的回复远未明确。

+0

抱歉的不清楚,即时通讯相当新的和非常糟糕的描述,但是,你可以给我另一种方式2解析比char_cast – newuser9282928292