....

 貌似 只有 root 可以绑定 1024 以下的端口。。
 通过  getaddrinfo 解析主机名对应的 ip
   struct addrinfo hints;
  struct addrinfo *result, *rp;
  int sfd, s, j;
  size_t len;
  ssize_t nread;
  char buf[BUF_SIZE];

  if (argc < 3)
    {
      fprintf (stderr, "Usage: %s host port msg...\n", argv[0]);
      exit (EXIT_FAILURE);
    }

  /* Obtain address(es) matching host/port */

  memset (&hints, 0, sizeof (struct addrinfo));
  hints.ai_family = AF_UNSPEC;    /* Allow IPv4 or IPv6 */
  hints.ai_socktype = SOCK_STREAM;
  hints.ai_flags = 0;
  hints.ai_protocol = 0;    /* Any protocol */

  s = getaddrinfo (argv[1], NULL, &hints, &result);
  if (s != 0)
    {
      fprintf (stderr, "getaddrinfo: %s\n", gai_strerror (s));
      exit (EXIT_FAILURE);
    }

  /* getaddrinfo() returns a list of address structures.
     Try each address until we successfully connect(2).
     If socket(2) (or connect(2)) fails, we (close the socket
     and) try the next address. */

  for (rp = result; rp != NULL; rp = rp->ai_next)
    {
      sfd = socket (rp->ai_family, rp->ai_socktype, rp->ai_protocol);
      if (sfd == -1)
    continue;

      //===
      printf("Try to connect %s \n",inet_ntoa(((sockaddr_in *)rp->ai_addr)->sin_addr));
      //====
      if (connect (sfd, rp->ai_addr, rp->ai_addrlen) != -1)
    break;            /* Success */

      close (sfd);
    }

  if (rp == NULL)
    {                /* No address succeeded */
      fprintf (stderr, "Could not connect\n");
      exit (EXIT_FAILURE);
    }

  freeaddrinfo (result);    /* No longer needed */
 
  Linux 真的是什么都是文件啊。。。。各种系统信息都可以从文件中查到。。。
  /proc/net/route  路由表信息。。、
 
  Linux 上用来解析 命令行的函数  getopt ...
 
  arpspoof 的使用  ,
  root@I-am-ubuntu:~# arpspoof -i eth0 -t 59.69.117.122 59.69.117.1  //也就是告诉 59.69.117.122 我是59.69.117.1
70:71:bc:3d:61:2e 14:da:e9:c8:5:6a 0806 42: arp reply 59.69.117.1 is-at 70:71:bc:3d:61:2e

//发现 GTK 的 弹出通知窗口有个问题就是 每个窗口都要持续一段时间  而且后台应该是放在队列里的  导致应用程序 即使关闭了 还在弹窗 ,,。。。

注意只有在 类的成员函数中才能使用 void test() const 这种形式。。。

char const* str  表示 *str = 2 此类的赋值  无效。。。
const char * str 此时 *str = 3 也无效。。
char * const str  这才表示 str 是只读的。。

一旦 throw 那么函数即停止  开始搜索 catch 块 ,,,即 throw 后面的语句得不到执行,,,

#define 定义是全局的,,,
我擦  我不应该用那个 ubuntun 的清理工具清理软件的配置文件的。。。晕死了。。


ipv6 网络环境下的ping 使用命令 ping6

相应的还有 trace6

交换 a b 的值

a ^= b ^= a ^= b;

 

你可能感兴趣的:(....)