#include #include #include #include #include #include #include #include #define BUFSIZE 1024 #define PORT 1337 struct testing { int socket; char *str; }; int readmes(struct testing *arg); int writemes(int, char *); main(int argc, char *argv[]) { if(argc != 2) { fprintf(stderr, "Usage: %s port\n", argv[0]); exit(1); } int psocket, ssocket, sin_size, error; struct sockaddr_in my_addr, their_addr; char read[BUFSIZE], write[BUFSIZE]; if((psocket = socket(PF_INET, SOCK_STREAM, 0)) == -1) { fprintf(stderr, "ERROR: socket\n"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(PORT); my_addr.sin_addr.s_addr = INADDR_ANY; memset(&(my_addr.sin_zero), '\0', 8); if(bind(psocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { fprintf(stderr, "ERROR: bind\n"); exit(1); } if(listen(psocket, 5) == -1) { fprintf(stderr, "ERROR: listen\n"); exit(1); } sin_size = sizeof(struct sockaddr_in); ssocket = accept(psocket, (struct sockaddr *)&their_addr, &sin_size); pthread_t tid; int st; struct testing arg; arg.socket = ssocket; arg.str = read; printf("waarde: %s\nadres: %d\n", read, read); printf("arg.socket = %d\narg.str = %d\n", arg.socket,arg.str); st = pthread_create(&tid, NULL, &readmes, &arg); writemes(ssocket, write); close(ssocket); } int readmes(struct testing *arg) { printf("Readmes, Tot hier\narg->str: %d\narg.socket: %d\nBUFSIZE-1: %d\n", arg->str, arg->socket, BUFSIZE-1); recv(arg->socket, arg->str, BUFSIZE-1, 0); printf("debugging: socket: %d\ndebugging: str: %s\ndebugging errno: %d\n", arg->socket, arg->str,errno); while(strcmp(arg->str, "exit") != 0) { printf("%s", arg->str); recv(arg->socket, arg->str, BUFSIZE-1, 0); } return 1; } int writemes(int socket, char *str) { printf("Writemes, Tot hier\n"); while(fgets(str, BUFSIZE-1, stdin)) { if(strcmp(str, "exit") == 0) return 1; send(socket, str, BUFSIZE-1, 0); } }