Если вы наберете «admin.nodeInfo» в консоли javascript, вы увидите:
listenAddr: "[::]:<value>",
name: "Geth/v1.6.1-stable-021c3c28/linux-amd64/go1.8.1",
ports: {
discovery: <value>,
listener: <value>
},
(вместе с кучей других вещей, конечно.)
Итак, у нас есть эти три порта: listenAddr, listener, discovery. Что каждый из них означает в данном контексте.
Я не спрашиваю о порте RPC или порте веб-сокетов. Я конкретно спрашиваю о том, что только что упомянул.
В основном есть три важных порта. Первый — это порт обнаружения, а два других — это порты прослушивателя:
Все они являются независимыми процессами и, следовательно, не могут работать на одних и тех же портах.
listenAddr - это адрес, т.е. содержит IP+номер порта
слушатель - это только номер порта
открытие также является номером порта для поиска новых пиров
Слово listener
имеет значение соединяющих ворот, например, это еще один фрагмент исходного кода эфириума («node/node.go»):
ipcListener net.Listener // IPC RPC listener socket to serve API requests
httpListener net.Listener // HTTP RPC listener socket to server API requests
wsListener net.Listener // Websocket RPC listener socket to server API requests
В Go
Listener
стандартный тип:
A Listener is a generic network listener for stream-oriented protocols.
Multiple goroutines may invoke methods on a Listener simultaneously.
type Listener interface {
// Accept waits for and returns the next connection to the listener.
Accept() (Conn, error)
// Close closes the listener.
// Any blocked Accept operations will be unblocked and return errors.
Close() error
// Addr returns the listener's network address.
Addr() Addr
}
Это значение слова listener
, но ListenAddr
это полный адрес сокета. он определен в ядре Linux как эта структура:
#include <netinet/in.h>
struct sockaddr_in {
short sin_family; // e.g. AF_INET
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
Поля sin_addr
и sin_port
вместе это переменная , собственно, это и должен вернуть listenAddr
метод .Addr()
Но в коде Ethereum, говоря, что listener
они не ссылаются Interface listener
ни на объект, который реализует интерфейс слушателя, они ссылаются на файл port number
.
listenAddr
порт, то вы не понимаете, что адрес в Интернете состоит из двух вещей: IP-адреса и номера порта. В противном случае вы бы не позвонили listenAddr
в порт, если бы знали это. Кроме того, двойное двоеточие в вашем примере означает, что это адрес IPv6, и он имеет нулевое значение, это нотация, используемая для выражения и адреса, заполненного нулями. Ваш вопрос некорректен из-за этого, здесь не 3 порта, а только 2 порта.
0xcaff
камень.212
значение
камень.212
значение