所以我用C ++编写了一个IRC机器人,并编写了自己的发送函数
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 ## channel:test放入控制台时,我在其他客户端上看不到任何内容,那么,有人可以帮忙吗?我对stackoverflow和C ++都很陌生,所以非常感谢任何反馈。
答案 0 :(得分:1)
如果send()
为PRIVMSG ##channel :hello
返回7,9,7,则表示您在三个不同的发送中发送了这一行,并且您丢失了内部空格,并发送了尾随新队。所以问题可能是你不正确地解析输入。你实际发送的是:
PRIVMSG (7 bytes)
##channel (9 bytes)
:hello\n (7 bytes)
再次注意你丢失了内部空间。
我相信你应该从控制台读取行,而不是单词。
请注意,我正在使用&#39; if&#39;,因为您对评论的回复远非明确。