Here's the updated code, however its still not working . Any more help?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <signal.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <dlfcn.h>
#include <pthread.h>
struct bot_t {
int sock;
FILE *toserver;
FILE *fromserver;
char server_name[256];
struct hostent *server;
struct sockaddr_in addr_sevr;
char channel[256];
char nick[256];
int port;
char *mode;
char *unused;
char *realname;
int state;
};
struct bot_t bot;
int main(int argc, char **argv) {
int z;
char input[4086];
char *pong = NULL;
int length;
puts("Enter the IRC server you want to connect to");
scanf("%s", bot.server_name);
bot.server = gethostbyname(bot.server_name);
if (bot.server == NULL) {
puts("Could not resolve host: Did you mispell it?");
return 1;
}
puts("Enter the channel to join");
scanf("%s", bot.channel);
if (bot.channel[0] != '#' &&
bot.channel[0] != '&') {
puts("Please Enter a Valid Channel");
return 1;
}
puts("Enter a Nickname for Perabot");
scanf("%s", bot.nick);
bot.port = 6667;
bot.unused = "*";
bot.mode = "0";
bot.realname = "Perabot, by Peradox";
printf("Forming Socket...\n");
bot.sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (bot.sock < 0) {
puts("Couldn't create socket");
return 1;
}
bot.fromserver = fdopen(bot.sock, "r");
bot.toserver = fdopen(dup(bot.sock), "w");
memset(&(bot.addr_sevr), 0, sizeof(bot.addr_sevr));
bot.addr_sevr.sin_family = AF_INET;
bot.addr_sevr.sin_port = htons(bot.port);
/* FIXME */
bot.addr_sevr.sin_addr.s_addr = /*inet_addr(bot.server->h_addr_list[0]) */
inet_addr("195.197.175.21"); /* orwell.freenode.net */
/* /FIXME */
length = sizeof(bot.addr_sevr);
if(bot.addr_sevr.sin_addr.s_addr == INADDR_NONE) {
puts("Bad Address");
return 1;
}
printf("Connecting...\n");
z = connect(bot.sock, (struct sockaddr *) &(bot.addr_sevr), length);
if (z == -1) {
puts("Could not connect to server");
return 1;
}
printf("Registering...\n");
/* Register User */
fprintf(bot.toserver, "NICK %s\r\n", bot.nick);
fprintf(bot.toserver, "USER %s %s %s :%s\r\n", bot.nick, bot.mode, bot.unused, bot.realname);
fflush(bot.toserver);
sleep(1);
/* Pong Reply */
while (pong == NULL) {
fscanf(bot.fromserver, "%s", input);
pong = strstr(input, "PING");
}
pong += 5;
fprintf(bot.toserver, "PONG %s\r\n", pong);
printf("Joining Channel...\n");
/* join the channel */
fprintf(bot.toserver, "JOIN %s\r\n", bot.channel);
printf("Ready...\n");
for(;;) {
fprintf(bot.toserver, "PING :123456789\r\n");
sleep(2);
}
/* quit */
fprintf(bot.toserver, "QUIT :Disgracefully Discharged\r\n");
shutdown(bot.sock, SHUT_RDWR);
fclose(bot.toserver);
fclose(bot.fromserver);
close(bot.sock);
return 0;
}
Thank you.