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
|
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <sstream>
#include <cstdlib>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
const char *getTok(const char str[],const int pos,const char asc) {
istringstream iss(str);
string mot;
for(int i=1;i<=pos;i++) { getline(iss,mot,asc); }
size_t size = mot.size() + 1;
char * buffer = new char[size];
strncpy_s(buffer,size,mot.c_str(),size);
return buffer;
}
int main()
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char buffer[BUFSIZ], version[] = "";
const char nick[] = "NICK squared\r\n",
user[] = "USER socketz \"x.com\" \"irc.voila.fr\" :E equal MC squared\r\n",
join[] = "JOIN #help-scripting\r\n",
reply[] = "PONG :irc.voila.fr\r\n";
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr("195.101.94.137");
sin.sin_family = AF_INET;
sin.sin_port = htons(6667);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
send(sock,user,strlen(user),0);
send(sock,nick,strlen(nick),0);
send(sock,join,strlen(join),0);
while (1)
{
memset(buffer,'\0',BUFSIZ);
recv(sock,buffer,BUFSIZ-1,0);
if (buffer) {
cout<<buffer<<endl;
if (strstr(getTok(buffer,1,' '),"PING")) { send(sock,reply,strlen(reply),0); }
else if (strstr(getTok(buffer,2,' '),"PRIVMSG")) {
if (strstr(getTok(buffer,2,''),"VERSION")) {
sprintf_s(version,BUFSIZ,"NOTICE %s :VERSION C.testing\r\n",getTok(getTok(buffer,1,'!'),2,':'));
send(sock,version,strlen(version),0);
}
}
}
else {
closesocket(sock);
WSACleanup();
system("PAUSE");
break;
}
}
return 0;
} |
Partager