#include <netdb.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/ioctl.h>#include <errno.h>#include <stdio.h>#include <time.h>Go to the source code of this file.
Functions | |
| void | wait_for_ms (int ms) |
| main (int argc, char *argv[]) | |
| main | ( | int | argc, | |
| char * | argv[] | |||
| ) |
Definition at line 27 of file psender.c.
00028 { 00029 if (argc != 5) 00030 { 00031 printf("Parametry: -ip_adresa/hostname port protokol(zadejte udp) konfiguracni_soubor"); 00032 return; 00033 } 00034 struct sockaddr_in my_addr, rem_addr; 00035 int sockfd; 00036 struct hostent *ph; 00037 struct servent *ps; 00038 struct protoent *pp; 00039 unsigned int inaddr; 00040 00041 int i,iii, len, rem_addr_length; 00042 char s[80]; 00043 char *p; 00044 char sbuf[80], rbuf[80]; 00045 FILE * input; 00046 FILE * config; 00047 00048 if ((inaddr=inet_addr(argv[1]))!=INADDR_NONE) 00049 ph=gethostbyaddr((char *)&inaddr, sizeof(unsigned int), AF_INET); 00050 else 00051 ph=gethostbyname(argv[1]); 00052 00053 if (ph) 00054 { 00055 printf("\nHostname: %s\n",ph->h_name); 00056 for (i=0; ph->h_aliases[i]; i++) 00057 printf(" %s\n", ph->h_aliases[i]); 00058 00059 printf("Type: %i\nLen: %i\n", ph->h_addrtype, ph->h_length); 00060 for (i=0; ph->h_addr_list[i]; i++) 00061 printf("Addr: %i.%i.%i.%i\n", 00062 (unsigned char)(ph->h_addr_list[i])[0], 00063 (unsigned char)(ph->h_addr_list[i])[1], 00064 (unsigned char)(ph->h_addr_list[i])[2], 00065 (unsigned char)(ph->h_addr_list[i])[3]); 00066 } 00067 else 00068 { 00069 herror("Chyba pri zjisteni adresy - neni registrovano ve jmenne sluzbe"); 00070 exit(10); 00071 } 00072 00073 //----------------------------------------------------------------- 00074 // Zjisteni protokolu 00075 00076 if (isdigit(argv[3][0])) 00077 pp=getprotobynumber(atoi(argv[3])); 00078 else 00079 pp=getprotobyname(argv[3]); 00080 00081 if (pp) 00082 { 00083 printf("\nProtocol: %s\n", pp->p_name); 00084 for (i=0; pp->p_aliases[i]; i++) 00085 printf(" %s\n", pp->p_aliases[i]); 00086 printf("Num: %i\n", pp->p_proto); 00087 } 00088 else 00089 { 00090 printf("Chyba pri zjisteni protokulu\n"); 00091 exit(11); 00092 } 00093 00094 //----------------------------------------------------------------- 00095 // Zjisteni sluzby 00096 00097 if (isdigit(argv[2][0])) 00098 ps=getservbyport(htons((u_short)atoi(argv[2])), pp->p_name); 00099 else 00100 ps=getservbyname(argv[2], pp->p_name); 00101 00102 if (ps) 00103 { 00104 printf("\nServname: %s\n",ps->s_name); 00105 for (i=0; ps->s_aliases[i]; i++) 00106 printf(" %s\n", ps->s_aliases[i]); 00107 00108 printf("Port: %hi\nProto: %s\n", ntohs((u_short)ps->s_port), ps->s_proto); 00109 } 00110 else 00111 { 00112 if (isdigit(argv[2][0])&&((u_short)atoi(argv[2]) > 1024)) 00113 printf("Cislo portu vetsi nez 1024\n"); 00114 else 00115 { 00116 printf("Chyba pri zjisteni sluzby\n"); 00117 exit(12); 00118 } 00119 } 00120 00121 00122 00123 //------------------------------------------------------------------ 00124 00125 printf("\n"); 00126 00127 if ((sockfd = socket(PF_INET, SOCK_DGRAM, pp->p_proto))<0) 00128 { 00129 perror("Socket nelze otevrit"); 00130 exit(1); 00131 } 00132 //------------------------------------------------------------------ 00133 bzero((char *) &my_addr, sizeof(my_addr)); 00134 my_addr.sin_family = AF_INET; 00135 my_addr.sin_addr.s_addr = INADDR_ANY; 00136 my_addr.sin_port = 0; 00137 if (bind(sockfd, (struct sockaddr *) &my_addr, sizeof(my_addr)) < 0) 00138 { 00139 perror("Chyba v bind"); 00140 close(sockfd); exit(2); 00141 } 00142 //------------------------------------------------------------------ 00143 bzero ((char *) &rem_addr, sizeof(rem_addr)); 00144 rem_addr.sin_family = AF_INET; 00145 if (isdigit(argv[2][0])&&((u_short)atoi(argv[2]) > 1024)) 00146 rem_addr.sin_port = htons((u_short)atoi(argv[2])); 00147 else 00148 rem_addr.sin_port = ps->s_port; // service port 00149 bcopy(ph->h_addr, (char *) &rem_addr.sin_addr, ph->h_length); 00150 char packet[9000]; 00151 char chunk; 00152 00153 // printf("budeme otvirat...%s \n", argv[4]); 00154 //flush(printf); 00155 00156 config = fopen(argv[4], "r"); 00157 if (config == 0) {printf("config nejde otevrit\n"); return 0 ;} 00158 else printf("soubor otevren \n"); 00159 char filename[256]; 00160 int aa; 00161 while(1) 00162 { 00163 if ( 2 != fscanf(config, "%s %i", &filename, &aa)) return 0; 00164 printf("%s %i", filename, aa); 00165 iii = 0; 00166 input = fopen(filename, "r"); 00167 if (input == 0) printf("nefunguje"); 00168 while (iii < aa) 00169 { 00170 chunk = getc(input); 00171 packet[iii] = chunk; 00172 iii++; 00173 printf("%c",chunk); 00174 } 00175 fclose(input); 00176 00177 strcpy(sbuf,argv[4]); 00178 len = strlen(sbuf); 00179 printf("Odesilana zprava(%i): %s\n", len, sbuf); 00180 00181 if ((len = sendto(sockfd, packet, iii, 0, (struct sockaddr *) &rem_addr, sizeof(rem_addr))) < 0) 00182 { 00183 perror("Chyba ve vysilani"); 00184 close(sockfd); exit(3); 00185 } 00186 printf("Odeslano %i\n", len); 00187 wait_for_ms(50); 00188 } 00189 close(sockfd); 00190 }
| void wait_for_ms | ( | int | ms | ) |
1.5.5