Это происходит потому, что библиотека Data.Streaming.Network
, используемая Скотти (ну, например, warp, которая используется Скотти) получает список возможных адресов, который охватывает как IPv4, так и IPv6, а затем пытается подключиться к портам на каждом из этих адресов по одному.за один раз, отбрасывая любые исключения ввода-вывода.
С двумя экземплярами Скотти на порту 3000 я вижу:
% netstat -an | grep 3000
tcp46 0 0 *.3000 *.* LISTEN
tcp4 0 0 *.3000 *.* LISTEN
Попытка третьего экземпляра Скотти, который я вижу:
% ./x
Setting phasers to stun... (port 3000) (ctrl-c to quit)
x: Network.Socket.bind: resource busy (Address already in use)