2016-09-17 9 views
-2

를 전송하지, 나는 내 자신의 전송 기능윈속 보내기 기능 그래서 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 ## 채널을 넣으면? 나는 stackoverflow와 C++에 상당히 익숙하다. 그래서 어떤 피드백도 크게 감사 할 것이다.

+0

그러면 보내지 못한 메시지가 인쇄됩니까? 안 그래요? 그리고 bobSocket은 올바르게 연결되어있는 유효한 소켓입니까? –

+0

@JasonC 아니요 실패한 메시지를 출력하지 않습니다. bobSocket은 올바로 연결되어있는 유효한 소켓입니다. IRC 레지스터 닉에 연결하여 원하는 채널에 조인하지만 입력은 IRC 서버로 보내지 않습니다. – newuser9282928292

+0

서버로 보내지 않습니까? 그게 올바른 포맷으로 된 것일까? 서버에 연결하여 회의실에 참여하는 경우 잘못된 형식의 명령을 보내는 것입니다. –

답변

1

send()하면 반환 7, 9, PRIVMSG ##channel :hello 7, 그것은 서로 다른 세 가지의 한 줄이 보내는 보내고, 당신은 내부 공간을 잃고, 그리고 후행 개행 문자를 보내는 것을 의미한다. 그래서 문제는 입력을 잘못 파싱하는 것일 수 있습니다.

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

하고 내부 공간을 잃어버린 것을 다시주의 : 당신이 실제로 보내는 것은.

나는 당신이 단어가 아닌 콘솔에서 줄을 읽어야한다고 생각한다.

의견에 대한 귀하의 답변이 명확하지 않기 때문에이 답변을 'if'로 시작하고 있습니다.

+0

불투명 함, 아주 새롭고 묘사가 안됐지만 유감스럽게도 다른 방법으로 char_cast보다 2 구문을 줄 수 있습니까? – newuser9282928292