#include #include #include #include #include #include #include #include #include #include #include #include #include int main (int argc, char **argv) { int sock; if ((argc != 4)||(atoi(argv[2])==0)) { fprintf(stderr,"Uzycie: %s host port nazwa_piku\n",argv[0]); return -1; } sock = socket(PF_INET6,SOCK_STREAM,0); if (sock == -1){ perror("socket"); return -1; } do { struct sockaddr_in6 sa; memset(&sa,0,sizeof(sa)); // sa.sin6_len = sizeof(sa); sa.sin6_family = AF_INET6; sa.sin6_port = htons(atoi(argv[2])); if (inet_pton(AF_INET6,argv[1],&(sa.sin6_addr))!=1) { struct in_addr addr4; if (inet_pton(AF_INET,argv[1],&addr4)!=1) { fprintf(stderr,"zly adres: %s\n",argv[1]); return -1; } memset(&(sa.sin6_addr),0,sizeof(sa.sin6_addr)); sa.sin6_addr._S6_un._S6_u8[10] = 0xff; sa.sin6_addr._S6_un._S6_u8[11] = 0xff; memcpy(&addr4, &(sa.sin6_addr._S6_un._S6_u8[12]), sizeof(struct in_addr)); } // printf ("Connect\n"); fflush(stdout); if (connect(sock,(struct sockaddr *) &sa,sizeof(sa))!=0) { perror("connect"); return -1; } } while(0); // printf ("Write\n"); fflush(stdout); char *fn = argv[3]; unsigned int tosend = strlen(fn)+1; while (tosend>0) { int retval = write(sock,fn+((strlen(fn)+1)-tosend),tosend); if (retval < 0) return -1; tosend-=retval; } // printf ("Read\n"); fflush(stdout); const unsigned int bufsize = 20+sizeof(int); char buf[bufsize]; unsigned int counter = 0; // printf("Toreceive = %d\n",bufsize); fflush(stdout); while (counter