diff options
author | beber <beber> | 2006-01-12 02:53:35 +0000 |
---|---|---|
committer | beber <beber> | 2006-01-12 02:53:35 +0000 |
commit | ae70eb8b8f4e47a062422144bdb1549d03d5e149 (patch) | |
tree | 99506d85ab568bb844f0d9257175bc69cdd9862a /tst/net.c | |
parent | comment and unused code (diff) | |
download | espik-ae70eb8b8f4e47a062422144bdb1549d03d5e149.tar.xz |
Missing files for git-import
Diffstat (limited to 'tst/net.c')
-rw-r--r-- | tst/net.c | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/tst/net.c b/tst/net.c new file mode 100644 index 0000000..eec6788 --- /dev/null +++ b/tst/net.c @@ -0,0 +1,263 @@ +#include <stdio.h> +#include <stdlib.h> + +#include <unistd.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <fcntl.h> +#include <sys/select.h> +#include <sys/time.h> + +#include <errno.h> + +#include <string.h> +#include <strings.h> + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <netdb.h> + +#include <Ecore_Config.h> + +#define NB_MAX 10 +#define ___NICK "ddero" + +#define _EOF "\r\n" + +typedef struct +{ + char *host; + int port; + +} t_servinfo; + +char * +format_send(char *msg) +{ + char *tosend; + + /*unsigned int i; */ + + tosend = malloc((strlen(msg) + 2) * sizeof(char)); + if (tosend == NULL) + { + fprintf(stderr, "Memory fault\n"); + exit(-2); + } + + strcpy(tosend, msg); + strcat(tosend, _EOF); + + /* + for (i = 0 ; i < strlen(msg) + 2 ; i++) + { + fprintf (stderr, "[%d] %X %c\n", i, tosend[i], tosend[i]); + } + */ + return (tosend); +} + +unsigned short +sendmsg_len(char *msg) +{ + return (strlen(msg) + 2); +} + +void +sendtoserv(int fd, char *msg) +{ + printf("send: %s\n", msg); + if ((send(fd, format_send(msg), sendmsg_len(msg), 0)) == -1) + { + perror("send"); + exit(-3); + } +} + +/*char* dir_from_path (char* path) +{ + char* dir; + unsigned int i; + + for ( i = strlen (path) -1 ; i != 0 ; i-- ) + { + if ( path[i] == '/') + break; + } + + dir = strndup (path, i); + dir [i] = '\0'; + + printf ("dir: %s\n", dir); + + return (dir); +}*/ + +void +loadconfig(t_servinfo * s_info) +{ + if (ecore_config_init("ebic") != ECORE_CONFIG_ERR_SUCC) + { + printf("Cannot init Ecore_Config"); + exit(-1); + } + + ecore_config_string_default("/config/server/host", "beber.melee"); + ecore_config_int_default("/config/server/port", 6667); + + ecore_config_load(); + + s_info->host = ecore_config_string_get("/config/server/host"); + s_info->port = ecore_config_int_get("/config/server/port"); + + ecore_config_shutdown(); + ecore_config_save(); + + printf("sinfo->host : %s\n", s_info->host); + printf("sinfo->port : %d\n", s_info->port); +} + +int +get_max(int *tab) +{ + int i, max; + + max = -1; + + for (i = 0; tab[i]; i++) + { + if (tab[i] > max) + max = tab[i]; + } + + return (max); +} + +int +main(int argc, char **argv) +{ + int sock; + struct sockaddr_in dest_host; + struct hostent *hostent; + + struct timeval wait_time; + + int count; + int std; + char buff[NB_MAX]; + char *tmp; + + int r_sel; + + fd_set fds_r; + fd_set fds_w; + + int i = 0; + + t_servinfo serveur; + + loadconfig(&serveur); + + if (argc < 3) + { + fprintf(stderr, "Loading from conf ...\n"); + } + else + { + printf("connecting to %s:%s\n", argv[1], argv[2]); + } + +/* serveur.host = argv[1]; + serveur.port = atoi (argv[2]); */ + + printf("host: %s\n", serveur.host); + printf("port: %d\n", serveur.port); + + printf("gethostbyname (%s)\n", serveur.host); + if ((hostent = gethostbyname(serveur.host)) == NULL) + { + fprintf(stderr, "%s could not be found\n", serveur.host); + exit(-1); + } + + memset(&dest_host, 0, sizeof(struct sockaddr_in)); + + dest_host.sin_family = AF_INET; + dest_host.sin_addr.s_addr = ((struct in_addr *)hostent->h_addr)->s_addr; + dest_host.sin_port = htons((short)serveur.port); + + printf("socket\n"); + if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) + { + perror("socket"); + exit(-1); + } + + printf("connect\n"); + if ((connect(sock, (struct sockaddr *)&dest_host, sizeof(dest_host))) == -1) + { + perror("connect"); + exit(-1); + } + + std = open("/dev/input", O_RDONLY); + perror("open"); + + printf("%d\n", std); + + FD_ZERO(&fds_r); + FD_ZERO(&fds_w); + FD_SET(std, &fds_r); + FD_SET(sock, &fds_r); + FD_SET(std, &fds_w); + FD_SET(sock, &fds_w); + +// wait_time.tv_sec = 1000000 / 1000000;*/ /* Nb sec */ +// wait_time.tv_usec = 1000000 % 1000000; /* Nb µsec */ + + do + { + memset(buff, 0, NB_MAX - 1); + + r_sel = select(FD_SETSIZE, &fds_r, &fds_w, NULL, 0); + + if (FD_ISSET(std, &fds_r)) + printf("fds_r: clavier\n"); + if (FD_ISSET(sock, &fds_r)) + printf("fds_r: reseau\n"); + if (FD_ISSET(std, &fds_w)) + printf("fds_w: clavier\n"); + if (FD_ISSET(sock, &fds_w)) + printf("fds_w: reseau\n"); + + count = recv(sock, buff, NB_MAX - 1, 0); + printf("%d: %s", i, buff); + if (i == 1) + sendtoserv(sock, "NICK " ___NICK); + if (i == 2) + sendtoserv(sock, "USER beber beber guybrush.melee :Ronnie Reagan"); + if (i == 3) + sendtoserv(sock, "OPER beber beber"); + if (i == 3) + sendtoserv(sock, "JOIN #opers"); + + if (i > 45) + { + tmp = + malloc(sizeof(char) * (strlen(buff) + strlen("PRIVMSG #opers :"))); + sprintf(tmp, "%s %s", "PRIVMSG #opers :", buff); + sendtoserv(sock, tmp); + free(tmp); + } + + //sleep (1); + i++; + } + while (count != 0); + + close(sock); + + return (0); +} |