UDPecho.c
上传用户:wei_4586
上传日期:2008-05-28
资源大小:18k
文件大小:1k
源码类别:

网络

开发平台:

Unix_Linux

  1. /* UDPecho.c - main, UDPecho */
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <stdio.h>
  6. extern int errno;
  7. int UDPecho(const char *host, const char *service);
  8. int errexit(const char *format, ...);
  9. int connectUDP(const char *host, const char *service);
  10. #define LINELEN 128
  11. /*------------------------------------------------------------------------
  12.  * main - UDP client for ECHO service
  13.  *------------------------------------------------------------------------
  14.  */
  15. int
  16. main(int argc, char *argv[])
  17. {
  18. char *host = "localhost";
  19. char *service = "echo";
  20. switch (argc) {
  21. case 1:
  22. host = "localhost";
  23. break;
  24. case 3:
  25. service = argv[2];
  26. /* FALL THROUGH */
  27. case 2:
  28. host = argv[1];
  29. break;
  30. default:
  31. fprintf(stderr, "usage: UDPecho [host [port]]n");
  32. exit(1);
  33. }
  34. UDPecho(host, service);
  35. exit(0);
  36. }
  37. /*------------------------------------------------------------------------
  38.  * UDPecho - send input to ECHO service on specified host and print reply
  39.  *------------------------------------------------------------------------
  40.  */
  41. int
  42. UDPecho(const char *host, const char *service)
  43. {
  44. char buf[LINELEN+1]; /* buffer for one line of text */
  45. int s, nchars; /* socket descriptor, read count*/
  46. s = connectUDP(host, service);
  47. while (fgets(buf, sizeof(buf), stdin)) {
  48. buf[LINELEN] = ''; /* insure null-terminated */
  49. nchars = strlen(buf);
  50. (void) write(s, buf, nchars);
  51. if (read(s, buf, nchars) < 0)
  52. errexit("socket read failed: %sn",
  53. strerror(errno));
  54. fputs(buf, stdout);
  55. }
  56. }