#include #include #include #include static int strtoip(char *ptr, int *error) { int i, j, s; unsigned int ip, n; *error = 0; ip = 0; s = 0; for(i = 0;i < 4;i++) { n = 0; for(j = 0;j < 3;j++) { if(!isdigit(ptr[s])) { *error = -1; return 0; } n = n * 10; n += ptr[s++] - '0'; if(ptr[s] == '.' || (ptr[s] <= ' ' && i == 3)) { break; } } s++; ip <<= 8; ip += n; } return ip; } int main(int argc, char **argv) { int sk, n, ret, err, port; unsigned int ip; struct sockaddr target; char buf[64]; if(argc != 3) { printf("option not found\r"); return -1; } ip = strtoip(argv[1], &err); if(err == -1) { printf("Illegal format\r"); return -1; } sscanf(argv[2], "%d", &port); sk = udp_socket(); if(sk == -1) { __write(0, "open failed.\n", 13); return -1; } target.sin_port = port; target.sin_addr = ip; scanf("%63s", buf); sendto(sk, buf, strlen(buf), &target); udp_free(sk); }