Bonjours, je souhait développer un bot IRC pour l'instant juste une bot de base ne faisant rien, l'objectif étant d'avoir un bot qui gére des partie sur des serveurs counter strike et autre.
Mon problème est que le serveur me répète Checking ident...
et No ident response; username prefixed with ~

Le .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
 
 
 
using namespace std;
 
 
#undef BUFSIZ
#define BUFSIZ 8196
#define IP_SERVER "dns.irc.server"
#define PORT_SERVER 6667
#define PASS_SERVER "lepass"
#define CHAN "#Game"
#define PASS_CHAN "test"
#define BOT_NICK "Wait"
#define BOT_USER "gamesu"
#define BOT_MAIL "traning@hotmail.com"
#define BOT_HOST "irc.server"
#define BOT_REAL_NICK "nemekickpas"
 
extern DWORD WINAPI bot_main(LPVOID);
 
int main(){
 
 
 
        ircconnect(IP_SERVER,PORT_SERVER);
 
}
 
 
 
 
int ircconnect(char *ip,int port){
    char buffer[2048];
    char buffe[2048];
    char *ip_ircd = IP_SERVER;
    char tmp[BUFSIZ];
    char nick[BUFSIZ];
    char user[BUFSIZ];
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET socketirc;
    SOCKADDR_IN sin;
    socketirc = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_addr.s_addr = inet_addr(ip_ircd);
    sin.sin_family = AF_INET;
    sin.sin_port=htons(port);
 
 
    int good=connect(socketirc, (SOCKADDR *)&sin, sizeof(sin));
    if(good !=0)
    {
            printf("error sock irc");
            system("PAUSE");
            return 0;
    }
    else
    {
 
 
    sprintf(tmp, "%s %s\n", "PASS", PASS_SERVER);
    send(socketirc, tmp, strlen(tmp), 0);
 
    sprintf(nick, "%s %s\n","NICK", BOT_NICK);
    send(socketirc, nick, strlen(nick), 0);
    recv(socketirc, buffer, 2048, 0);
    printf(buffer);
 
    sprintf(user,"%s %s %s %s : %s\n","USER",BOT_USER,BOT_MAIL,BOT_HOST,BOT_REAL_NICK);
    send(socketirc,user,strlen(user),0);
    recv(socketirc, buffer, 2048, 0);
    printf(buffer);
 
    sprintf(tmp,"%s %s %s\n","MODE",BOT_NICK,"+i");
    send(socketirc,tmp,strlen(tmp),0);
    recv(socketirc, buffer, 2048, 0);
    printf(buffer);
 
    sprintf(tmp,"%s %s %s\n","JOIN",CHAN,PASS_CHAN);
    send(socketirc,tmp,strlen(tmp),0);
    recv(socketirc, buffer, 2048, 0);
    printf(buffer);
 
    while(1)
    {
    memset(buffer, '\0', 2048);
    recv(socketirc, buffer, 2048, 0);
 
        if(strstr(buffer, "PING :"))
         {
            char* tmp = strdup(buffer);
            tmp = buffer + strlen("PING :") + 1;
            sprintf(buffer, "PONG :%s\n", tmp);
            send(socketirc, buffer, 0, 0);
            printf(buffer);
        }
 
 
 
    }
 
    return socketirc;
 
    }
}

Et le .h


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <windows.h>
#include <stdlib.h>
#include <string>
#pragma comment(lib, "ws2_32.lib")
 
 
#ifdef WIN32
#define SOCKET_ERROR (-1) /* défini dans winsock.h */
typedef struct sockaddr_in SOCKADDR_IN; /* idem */
#endif
 
int ircconnect(char *ip,int port);
 
#endif
Je suis debutant dsl si mon code est horrible