Java server, UWP(C#)client間でのTCPIP通信

前提

Javaをサーバー,C#で書かれたUWPアプリケーション(Hololens2)をクライアントとして,TCP通信で相互通信を行いたいです。

しかし、データの送受信の以前に、サーバーを立ち上げて、クライアントを立ち上げてもこの2つが接続されなくて困っています。

実現したいこと

  • [1] Hololensとほかのソフトウェアでの通信のためにその2つ間のTCPIP通信の開通

該当のソースコード

C#

using System;#if UNITY_UWPusing System.IO;using System.Threading.Tasks;using Windows.Networking;using Windows.Networking.Sockets;#endif public class TcpNetworkClientManager { #if UNITY_UWP private StreamWriter writer = null;#endif public TcpNetworkClientManager(string IP, int port) {#if UNITY_UWP Task.Run(async () => { StreamSocket socket = new StreamSocket(); await socket.ConnectAsync(new HostName(IP),port.ToString()); writer = new StreamWriter(socket.OutputStream.AsStreamForWrite()); StreamReader reader = new StreamReader(socket.InputStream.AsStreamForRead()); try { string data = await reader.ReadToEndAsync(); } catch (Exception) { } writer = null; });#endif } public void SendMessage(string data) {#if UNITY_UWP if (writer != null) Task.Run(async () => { await writer.WriteAsync(data); await writer.FlushAsync(); });#endif } }

該当のソースコード

C#

using System.Collections;using System.Collections.Generic;using UnityEngine; public class TCPIP : MonoBehaviour { string IP = "127.0.0.1"; int port = 3333; // TcpNetworkClientManager client = null; // Start is called before the first frame update void Start() { Debug.Log("Connected"); client = new TcpNetworkClientManager(IP, port); } // Update is called once per frame void Update() { }}

該当のソースコード

Java

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class server { public static void main(String[] args) { Sample1 ss = new Sample1(); ss.runSample(); } } class Sample1 { void runSample() { String data1 = ""; String data2; int num; ServerSocket sSocket = null; Socket socket = null; BufferedReader reader = null; BufferedReader reader2 = null; PrintWriter writer = null; try{ //IPアドレスとポート番号を指定してサーバー側のソケットを作成 sSocket = new ServerSocket(3333); System.out.println("クライアントからの入力待ち状態"); //クライアントからの要求を待ち続けます socket = sSocket.accept(); System.out.println("アクセス完了"); //クライアントからの受取用 reader = new BufferedReader( new InputStreamReader (socket.getInputStream())); reader2 = new BufferedReader( new InputStreamReader (socket.getInputStream())); //クライアントへの送信用 writer = new PrintWriter( socket.getOutputStream(), true); while(true) { data1 = reader.readLine(); System.out.println("1" +data1); if(data1.equals("bye")){ System.out.println("2"); break; } try{ num = Integer.parseInt(data1); //data1 = reader.readLine(); if(num %2 == 0){ writer.println("OK"); }else{ writer.println("NG"); } /*System.out.println("data1 ::" + data1 + "\n" ); data2 = reader2.readLine(); System.out.println("data2 :: " + data2 + "\n");*/ }catch(NumberFormatException e){ //送信用の文字を送信 writer.println("数値を入力して下さい"); } System.out.println("クライアントで入力された文字=" + data1); } }catch(Exception e){ System.out.println("3"); e.printStackTrace(); }finally{ try{ if (reader!=null){ reader.close(); } if (writer!=null){ writer.close(); } if (socket!=null){ socket.close(); } if (sSocket!=null){ sSocket.close(); } System.out.println("サーバー側終了です"); } catch (IOException e) { e.printStackTrace(); } } }}

試したこと

https://akihiro-document.azurewebsites.net/post/hololens_sharingtcp/
https://qiita.com/SatoshiGachiFujimoto/items/91e28207ad48378d9c28
https://teratail.com/questions/130702
これらを参考に取り組んだのですが、うまく接続をできませんでした。

UWPを使用するのに慣れていないため、教えていただけると幸いです。

補足情報(FW/ツールのバージョンなど)

Unity2020.3.30.f1からビルドしたUWPアプリケーション(visual studio 2019)

コメントを投稿

0 コメント