#include #include #include #include unsigned 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[32]; 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 = tcp_socket(0); target.sin_addr = ip; target.sin_port = port; ret = tcp_connect(sk, &target); if(ret == -1) { printf("Connect error!\r"); return -1; } scanf("%s", buf); while(memcmp(buf, "quit", 4)) { tcp_write(sk, buf, strlen(buf)); n = tcp_read(sk, buf, 31); buf[n] = 0; printf("[%s]\r", buf); scanf("%s", buf); } tcp_free(sk); }