[О блоге]
[наверх]
[пред]
[2020-05-29 14:20:21+03:00]
[82b7a30ffba69976ade01bcd162059f3a727d58f]
Темы: [hate][plan9]
Unix не предназначался для сетевой работы, в отличии от Plan9
Тут что-то поднялась у меня при общении тема Plan9 и в одной PDF-ке
нашёл пример как на C под POSIX подключиться по TCP:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
...
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 <u.h>
#include <libc.h>
...
fd = dial(netmkaddr(argv[1], "tcp", "discard"), 0, 0, 0);
if(fd < 0) sysfatal("can’t dial %s: %r", argv[1]);
[оставить комментарий]