-
-
Notifications
You must be signed in to change notification settings - Fork 184
Closed
Description
Unity version: 2021 LTS and 2022 something
Fish-Networking version: 3.5.8 (version increased)
Describe the bug
When building headless server, the client cannot connect to ports other than 7770, at least on linux.
To Reproduce
Steps to reproduce the behavior:
- Add NetworkController MonoBehaviour attached to this issue
- Set ServerManager's
StartOnHeadless
to false - Build a headless dedicated server using Unity Editor
- Build a normal client using Unity Editor
- Start server from Command line via
game.x86_64 --server --port 7770 --serverBindAddressIpv4 127.0.0.1
- Start client from Command line via
game.x86_64 --client --port 7770 --clientAddress 127.0.0.1
- Client can connect
- Kill both, server and client
- Start server from Command line via
game.x86_64 --server --port 7771 --serverBindAddressIpv4 127.0.0.1
- Start client from Command line via
game.x86_64 --client --port 7771 --clientAddress 127.0.0.1
- Client can't connect
Expected behavior
The client can connect to the server no matter what port is used and if headless mode.
Code
using System;
using FishNet;
using FishNet.Transporting;
using FishNet.Transporting.Tugboat;
using UnityEngine;
namespace Networking {
public class NetworkController : MonoBehaviour {
private void Awake() {
var tugboat = InstanceFinder.NetworkManager.gameObject.GetComponent<Tugboat>();
bool startServer = false;
bool startClient = false;
ushort port = tugboat.GetPort();
string clientAddress = tugboat.GetClientAddress();
string serverBindAddressIpv4 = tugboat.GetServerBindAddress(IPAddressType.IPv4);
string serverBindAddressIpv6 = tugboat.GetServerBindAddress(IPAddressType.IPv6);
Debug.Log("Parsing commandline arguments...");
string[] args = Environment.GetCommandLineArgs();
for (int i = 0; i < args.Length; i++) {
var argument = args[i];
switch (argument) {
case "--server":
startServer = true;
break;
case "--client":
startClient = true;
break;
case "--clientAddress":
clientAddress = args[++i];
break;
case "--serverBindAddressIpv4":
serverBindAddressIpv4 = args[++i];
break;
case "--serverBindAddressIpv6":
serverBindAddressIpv6 = args[++i];
break;
case "--port":
port = ushort.Parse(args[++i]);
break;
}
}
Debug.Log(
$"Parsing commandline arguments ended:\n"
+ $"Start server: {startServer}\n"
+ $"Start client: {startClient}\n"
+ $"Client address: {clientAddress}\n"
+ $"Server bind address IPv4: {serverBindAddressIpv4}\n"
+ $"Server bind address IPv6: {serverBindAddressIpv6}\n"
+ $"Port: {port}");
tugboat.SetServerBindAddress(serverBindAddressIpv4, IPAddressType.IPv4);
tugboat.SetServerBindAddress(serverBindAddressIpv6, IPAddressType.IPv6);
tugboat.SetClientAddress(clientAddress);
tugboat.SetPort(port);
if (startServer) {
StartServer();
}
if (startClient) {
StartClient();
}
}
private static void StartClient() {
Debug.Log("Starting Client...");
InstanceFinder.ClientManager.StartConnection();
}
private static void StartServer() {
Debug.Log("Starting Server...");
InstanceFinder.ServerManager.StartConnection();
}
}
}
Metadata
Metadata
Assignees
Labels
No labels