// 各クライアント毎に処理するスレッド private void ClientStream(TcpClient client) { Debug.Log($"Accept client({((IPEndPoint)client.Client.RemoteEndPoint).Address}:{((IPEndPoint)client.Client.RemoteEndPoint).Port})と接続しました。"); client.LingerState = new LingerOption(true, 0); // 切断時は即切る NetIO.Setup(); // 受信処理作成 // 本来はクライアント毎に持つべきもの。 NetIO.Prefix = "server"; // 開始前コールバック NetIO.Begin(client); // 接続開始 // テスト送信 // HvNetIOTest.Send(networkIO); //接続されている限り読み続ける while (client.Connected && IsBegin) { Thread.Sleep(3000); HvNetIOTest.Send(NetIO); // 定期的にテスト送信 } Debug.Log($"server : out loop conedted:{client.Connected} _beginServer:{IsBegin} "); // 終了を通知 // HvNetIOCommand.SendEndCommand(NetIO); NetIO.Writer.Flush(); NetIO.CloseNetwork(); Thread.Sleep(50); NetIO.Dispose(); Thread.Sleep(100); }
// クライアント接続テスト public async Task TestClient(IPAddress ipaddr, int port) { await Task.Delay(1000); var netIO = new HvNetworkIO(); try { Debug.Log("TestClient : -Start TestClient"); _decoder = netIO.GetResever <HvNetDecoder>(); netIO.Prefix = "client"; var client = new TcpClient(ipaddr.ToString(), port); netIO.Begin(client); // 接続開始 // Test送信 HvNetIOTest.Send(netIO); // クライアント情報送信 HvNetIOClientInfo.Send(netIO, Quaternion.identity, -1); try { do { Thread.Sleep(500); } while (netIO.IsConnected && _playClient); } catch (Exception e) { Debug.Log($"client error : {e.Message}"); } Debug.Log("TestClient : out loop"); } catch (Exception e) { Debug.Log(e.Message); throw; } finally { netIO.CloseNetwork(); Thread.Sleep(50); netIO.Dispose(); Debug.Log("-End TestClient"); } }