Что: 82b7a30ffba69976ade01bcd162059f3a727d58f
Когда: 2020-05-29 14:20:21+03:00
Темы: 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]);
Сгенерирован: SGBlog 0.34.0