2016-09-17 1 views
-2

so bin ich ein IRC-Bot in C schreiben ++, und ich schrieb meine eigene SendefunktionWinSock Sendefunktion Senden nicht

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; 
    } 
} 

und wann immer ich es in meiner Sendmessage-Funktion (das für Nachrichten Loopchecks und dann läuft die ganzen Eingang Art zu senden) wie diese

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

aber wenn ich PRIVMSG ## Kanal setzen: Test in die Konsole, sehe ich nicht alles auf dem anderen Client, so kann jeder wie helfen? Ich bin ziemlich neu zu Stackoverflow und C++, so dass jede Rückmeldung sehr geschätzt wird.

+0

So druckt es die Nachricht senden fehlgeschlagen? Oder nicht? Und BobSocket ist eine gültige, richtig angeschlossene Steckdose? –

+0

@JasonC nein es druckt nicht die fehlgeschlagene Nachricht, und bobSocket ist ein gültiger, richtig verbundener Socket, es verbindet sich mit IRC registriert Nick und verbindet den Kanal, ich will es, aber die Eingabe nicht nur an IRC-Server senden. – newuser9282928292

+0

Sind Sie sicher, dass es nicht an den Server gesendet wird? Könnte es sein, dass es einfach nicht im richtigen Format ist? Wenn Sie sich mit dem Server verbinden und einem Raum beitreten, würde ich davon ausgehen, dass Sie einen falsch formatierten Befehl senden. –

Antwort

1

Wenn send() 7, 9, 7 für PRIVMSG ##channel :hello zurückgibt, bedeutet das, dass Sie diese eine Zeile in drei verschiedenen Sends senden, und Sie verlieren die internen Leerzeichen und senden den abschließenden Zeilenvorschub. Das Problem besteht möglicherweise darin, dass Sie die Eingabe falsch analysieren. Was Sie tatsächlich senden ist:

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

und beachten Sie noch einmal, dass Sie die internen Räume verloren haben.

Ich glaube, Sie sollten Zeilen von der Konsole, nicht Wörter lesen.

Und beachten Sie, dass ich diese Antwort mit "if" beginne, da Ihre Antworten auf Kommentare weit davon entfernt waren, klar zu sein.

+0

Entschuldigung für die Unklarheit, ich bin ziemlich neu und sehr schlecht zu beschreiben, aber, könnten Sie mir einen anderen Weg 2 parse als char_cast geben – newuser9282928292