7 #include <sys/socket.h> 8 #include <netinet/in.h> 13 #include <netinet/if_ether.h> 15 #include <linux/sockios.h> 23 #error Please define TCP_PORT 46 perror(
"Can not allocate buffer\n");
89 int sockfd, portno, n;
92 struct sockaddr_in dest_addr;
93 struct hostent *server;
99 sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
102 perror(
"ERROR opening socket");
106 server = gethostbyname(ip);
107 if (server ==
NULL) {
111 printf(
"Host name: %s\n", server->h_name);
113 bzero((
char *) &dest_addr,
sizeof(dest_addr));
114 dest_addr.sin_family = AF_INET;
115 bcopy((
char *)server->h_addr,
116 (
char *)&dest_addr.sin_addr.s_addr,
118 dest_addr.sin_port = htons(portno);
119 if (connect(sockfd,(
struct sockaddr *)&dest_addr,
sizeof(dest_addr)) < 0)
121 perror(
"ERROR connecting");
127 perror(
"ERROR writing to socket");
138 n =
read(sockfd,buffer,
sizeof(buffer)-1);
148 int main(
int argc,
char *argv[])
154 char ip[INET_ADDRSTRLEN];
155 int port_no = TCP_PORT;
159 memset(ip,0,
sizeof(ip)-1);
160 memset(message,0,
sizeof(message)-1);
161 for(i=1;i<argc;++i) {
162 if(
strcmp(argv[i],
"-i") == 0) {
165 if(
strcmp(argv[i],
"-m") == 0) {
166 strncpy(message,argv[++i],
sizeof(message)-1);
168 if(
strcmp(argv[i],
"-p") == 0) {
169 sscanf(argv[++i],
"%d", &port_no);
171 if(
strcmp(argv[i],
"-e") == 0) {
178 fprintf(
stderr,
"usage: -i ip_address -m \"message\" [ -p port ]\n ");
186 escape(message,
sizeof(message)-1);
187 printf(
"ip:%s, port:%d, message:\n%s\n",ip,port_no,message);
MEMSPACE int WEAK_ATR strcmp(const char *str, const char *pat)
Compare two strings.
MEMSPACE size_t WEAK_ATR strlen(const char *str)
String Length.
MEMSPACE int close(int fileno)
POSIX Close a file with fileno handel.
MEMSPACE void perror(const char *s)
POSIX perror() - convert POSIX errno to text with user message.
MEMSPACE WEAK_ATR char * strncpy(char *dest, const char *src, size_t size)
copy a string of at most N characters
MEMSPACE int fprintf(FILE *fp, const char *format,...)
fprintf function Example user defined printf function using fputc for I/O This method allows I/O to d...
MEMSPACE ssize_t write(int fd, const void *buf, size_t count)
POSIX Write count bytes from *buf to fileno fd.
MEMSPACE void * calloc(size_t nmemb, size_t size)
calloc buffer POSIX function
MEMSPACE WEAK_ATR char * strcpy(char *dest, const char *src)
copy a string
int escape(char *message, int size)
MEMSPACE ssize_t read(int fd, const void *buf, size_t count)
POSIX read count bytes from *buf to fileno fd.
void send_message(char *message, char *ip, int port, int echoback)
int main(int argc, char *argv[])
int sscanf(const char *strp, const char *fmt,...)
MEMSPACE int printf(const char *format,...)