WinSock发送功能不发送

时间:2016-09-17 01:18:00

标签: c++ iostream winsock

所以我用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 ++都很陌生,所以非常感谢任何反馈。

1 个答案:

答案 0 :(得分:1)

如果send()PRIVMSG ##channel :hello返回7,9,7,则表示您在三个不同的发送中发送了这一行,并且您丢失了内部空格,并发送了尾随新队。所以问题可能是你不正确地解析输入。你实际发送的是:

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

再次注意你丢失了内部空间。

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

请注意,我正在使用&#39; if&#39;,因为您对评论的回复远非明确。