From 82b7a30ffba69976ade01bcd162059f3a727d58f Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 29 May 2020 14:20:21 +0300 Subject: [PATCH] =?utf8?q?Unix=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B5=D0=B4?= =?utf8?q?=D0=BD=D0=B0=D0=B7=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D1=81=D1=8F=20?= =?utf8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B5=D1=82=D0=B5=D0=B2=D0=BE=D0=B9?= =?utf8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B,=20=D0=B2=20=D0=BE=D1=82?= =?utf8?q?=D0=BB=D0=B8=D1=87=D0=B8=D0=B8=20=D0=BE=D1=82=20Plan9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Тут что-то поднялась у меня при общении тема Plan9 и в одной PDF-ке нашёл пример как на C под POSIX подключиться по TCP: #include #include #include #include ... struct sockaddr_in sock_in; struct servent *sp; struct hostent *host; ... memset(&sock_in, 0, sizeof (sock_in)); sock_in.sin_family = AF_INET; f = socket(AF_INET, SOCK_STREAM, 0); if (f < 0) error("socket"); if (bind(f, (struct sockaddr*)&sock_in, sizeof sock_in) < 0) error("bind"); host = gethostbyname(argv[1]); if(host){ sock_in.sin_family = host−>h_addrtype; memmove(&sock_in.sin_addr, host−>h_addr, host−>h_length); } else { sock_in.sin_family = AF_INET; sock_in.sin_addr.s_addr = inet_addr(argv[1]); if (sock_in.sin_addr.s_addr == −1) error("unknown host %s", argv[1]); } sp = getservbyname("discard", "tcp"); if (sp) { sock_in.sin_port = sp−>s_port; } else { sock_in.sin_port = htons(9); }; if (connect(f, (struct sockaddr*)&sock_in, sizeof sock_in) < 0) error("connect:"); ... тогда как в Plan9 это выполняется: #include #include ... fd = dial(netmkaddr(argv[1], "tcp", "discard"), 0, 0, 0); if(fd < 0) sysfatal("can’t dial %s: %r", argv[1]); -- 2.48.1