All pastes #410769 Raw Edit

Anonymous

public c v1 · immutable
#410769 ·published 2007-03-26 17:23 UTC
rendered paste body
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <netinet/in.h>#include <arpa/inet.h>#include <pthread.h>#include <errno.h>#define BUFSIZE 1024#define PORT 1337struct 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);        }}