質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

解決済

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

aaaddd
aaaddd

総合スコア20

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

2回答

0評価

0クリップ

260閲覧

投稿2022/06/29 07:52

前提

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

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

実現したいこと

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

該当のソースコード

C#

using System; #if UNITY_UWP using 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)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/06/30 00:17 編集

tcpip 的につながる環境で実行されているのでしょうか。 また、各々何処まで動いているのか、ログやエラー等のメッセージの状態等をご質問に追加してください。 [3-4. 発生している問題・エラーメッセージを書きましょう] https://teratail.com/help/question-tips#questionTips34
dodox86

2022/06/30 00:22

> string IP = "127.0.0.1"; ということで、サーバーもクライアントも同じPC上で、つまりはローカルで動かそうとしていますか。
aaaddd

2022/06/30 05:58

>[3-4. 発生している問題・エラーメッセージを書きましょう] 特にエラーメッセージは出力されていません また、Unity内でballというGameObjectを定義してオブジェクトの非表示を実行したところ、非表示されたので追加したところの呼び出しは確認しました。 public TcpNetworkClientManager(string IP, int port) { #if UNITY_UWP //追加 ball.SetActive(false);  //ball objectの非表示 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 }
aaaddd

2022/06/30 05:59

>ということで、サーバーもクライアントも同じPC上で、つまりはローカルで動かそうとしていますか。 はい、そのとおりです 同一PC間での通信を試みています
jimbe

2022/06/30 07:50

java の方が System.out.println で流れが分かるようになっているのと同じように、UWP の方にも細かく Debug.Log を入れてどこを通って何が起きているのかを調べてみては如何でしょうか。
aaaddd

2022/06/30 09:07

>Debug.Log を入れてどこを通って何が起きているのかを調べてみては如何でしょうか。 そうですね、一旦その方向でやろうと考えています。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。