前提
Javaをサーバー,C#で書かれたUWPアプリケーション(Hololens2)をクライアントとして,TCP通信で相互通信を行いたいです。
しかし、データの送受信の以前に、サーバーを立ち上げて、クライアントを立ち上げてもこの2つが接続されなくて困っています。
実現したいこと
- [1] Hololensとほかのソフトウェアでの通信のためにその2つ間のTCPIP通信の開通
該当のソースコード
C#
1using System; 2#if UNITY_UWP 3using System.IO; 4using System.Threading.Tasks; 5using Windows.Networking; 6using Windows.Networking.Sockets; 7#endif 8 9public class TcpNetworkClientManager 10{ 11 12#if UNITY_UWP 13 private StreamWriter writer = null; 14#endif 15 16 public TcpNetworkClientManager(string IP, int port) 17 { 18#if UNITY_UWP 19 Task.Run(async () => { 20 StreamSocket socket = new StreamSocket(); 21 await socket.ConnectAsync(new HostName(IP),port.ToString()); 22 writer = new StreamWriter(socket.OutputStream.AsStreamForWrite()); 23 StreamReader reader = new StreamReader(socket.InputStream.AsStreamForRead()); 24 try 25 { 26 string data = await reader.ReadToEndAsync(); 27 } 28 catch (Exception) { } 29 writer = null; 30 }); 31#endif 32 } 33 34 public void SendMessage(string data) 35 { 36#if UNITY_UWP 37 if (writer != null) Task.Run(async () => 38 { 39 await writer.WriteAsync(data); 40 await writer.FlushAsync(); 41 }); 42#endif 43 } 44 45} 46
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class TCPIP : MonoBehaviour 6{ 7 8 string IP = "127.0.0.1"; 9 int port = 3333; 10 11 // TcpNetworkClientManager client = null; 12 13 // Start is called before the first frame update 14 void Start() 15 { 16 Debug.Log("Connected"); 17 client = new TcpNetworkClientManager(IP, port); 18 } 19 20 // Update is called once per frame 21 void Update() 22 { 23 24 } 25} 26
該当のソースコード
Java
1import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.io.PrintWriter; 5 import java.net.InetSocketAddress; 6 import java.net.ServerSocket; 7 import java.net.Socket; 8 9public class server { 10 11 public static void main(String[] args) { 12 Sample1 ss = new Sample1(); 13 ss.runSample(); 14 15 } 16 17 18} 19 20class Sample1 { 21 22 void runSample() { 23 24 25 String data1 = ""; 26 String data2; 27 int num; 28 29 ServerSocket sSocket = null; 30 Socket socket = null; 31 BufferedReader reader = null; 32 BufferedReader reader2 = null; 33 34 PrintWriter writer = null; 35 36 try{ 37 //IPアドレスとポート番号を指定してサーバー側のソケットを作成 38 sSocket = new ServerSocket(3333); 39 40 41 System.out.println("クライアントからの入力待ち状態"); 42 43 //クライアントからの要求を待ち続けます 44 socket = sSocket.accept(); 45 46 System.out.println("アクセス完了"); 47 48 //クライアントからの受取用 49 reader = new BufferedReader( 50 new InputStreamReader 51 (socket.getInputStream())); 52 53 reader2 = new BufferedReader( 54 new InputStreamReader 55 (socket.getInputStream())); 56 57 //クライアントへの送信用 58 writer = new PrintWriter( 59 socket.getOutputStream(), true); 60 61 62 while(true) { 63 64 data1 = reader.readLine(); 65 System.out.println("1" +data1); 66 if(data1.equals("bye")){ 67 System.out.println("2"); 68 break; 69 } 70 71 try{ 72 73 num = Integer.parseInt(data1); 74 75 //data1 = reader.readLine(); 76 77 if(num %2 == 0){ 78 writer.println("OK"); 79 }else{ 80 writer.println("NG"); 81 } 82 83 /*System.out.println("data1 ::" + data1 + "\n" ); 84 85 data2 = reader2.readLine(); 86 87 System.out.println("data2 :: " + data2 + "\n");*/ 88 89 }catch(NumberFormatException e){ 90 //送信用の文字を送信 91 writer.println("数値を入力して下さい"); 92 } 93 94 System.out.println("クライアントで入力された文字=" + data1); 95 } 96 }catch(Exception e){ 97 System.out.println("3"); 98 e.printStackTrace(); 99 }finally{ 100 try{ 101 if (reader!=null){ 102 reader.close(); 103 } 104 if (writer!=null){ 105 writer.close(); 106 } 107 if (socket!=null){ 108 socket.close(); 109 } 110 if (sSocket!=null){ 111 sSocket.close(); 112 } 113 System.out.println("サーバー側終了です"); 114 } catch (IOException e) { 115 e.printStackTrace(); 116 } 117 } 118 } 119} 120
試したこと
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)

回答2件
あなたの回答
tips
プレビュー