#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <pthread.h>

#define BUF_SIZE 1024
#define IP "127.0.0.1"
#define PORT 1234
void * send_file(void * arg);

int main()
{
    pthread_t snd_thread;
    void * thread_return;

    pthread_create(&snd_thread, NULL, send_file, NULL);
    pthread_join(snd_thread, &thread_return);

    return 0;
}

void * send_file(void * arg)
{
    int sock;
    char buf[BUF_SIZE];
    char *fstr = "konfiguracja1.txt";
    FILE *fp;
    int read_cnt;

    struct sockaddr_in serv_adr;

    sock=socket(PF_INET, SOCK_STREAM, 0);
    if(sock == -1)
    {
        perror("socket() error");
        exit(1);
    }

    memset(&serv_adr, 0, sizeof(serv_adr));
    serv_adr.sin_family=AF_INET;
    serv_adr.sin_addr.s_addr=inet_addr(IP);
    serv_adr.sin_port=htons(PORT);

    if(connect(sock, (struct sockaddr*)&serv_adr, sizeof(serv_adr)) == -1)
    {
        perror("connect() error");
        exit(1);
    }

    fp=fopen(fstr, "rb");
    if(fp == NULL)
    {
        perror("fopen() error");
        exit(1);
    }

    while(1)
    {
        read_cnt=fread((void*)buf, 1, BUF_SIZE, fp);
        if(read_cnt<BUF_SIZE)
        {
            write(sock, buf, read_cnt);
            break;
        }
        write(sock, buf, BUF_SIZE);
    }

    shutdown(sock, SHUT_WR);
    read(sock, buf, BUF_SIZE);
    printf("Message from server: %s \n", buf);

    fclose(fp);
    close(sock);
    return NULL;
}
