2016-10-14 9 views
1

WebSocketを使用してUWPクライアントとJAVAサーバの間でテキスト、プリミティブデータ型、オブジェクトを送信する必要がありますが、コード化の方法はわかりません。WebSocketを使用してUWPクライアントとJavaサーバーを通信する方法は?

コーディングを本当に難しくするこれらの2つの言語の間に違いがあるかどうか分かりませんか? (私はオンラインチュートリアルを検索しましたが、私のコードの動作はまだできませんでした)。

Provider.java

public class Provider{ 
    ServerSocket providerSocket; 
    Socket connection = null; 
    OutputStream out; 
    InputStream in; 
    String message; 
    MesageModel model; 
    Provider(){} 
    void run() 
    { 
     try{ 
      providerSocket = new ServerSocket(9999, 10); 
      //2. Wait for connection 
      System.out.println("Waiting for connection"); 
      connection = providerSocket.accept(); 
      System.out.println("New connection accepted "+":" + connection.getPort()); 
      in = connection.getInputStream(); 
      out = connection.getOutputStream(); 
      if(out == null) 
      { 
       System.out.println("Out Status : Null"); 
      }else 
      { 
       System.out.println("Out Status : Not Null"); 
       sendMessage("Hello Client"); 
      } 
      if(in == null) 
      { 
       System.out.println("In Status : Null"); 
      }else 
      { 
       receiveConnection(); 
      } 
     } 
     catch(IOException ioException){ 
      ioException.printStackTrace(); 
     } 
     finally{ 
      //4: Closing connection 
      try{ 
       if(in != null){ 
        System.out.println("Close In"); 
       in.close(); 
       } 
       if(out != null){ 
        System.out.println("Close Out"); 
        out.close(); 
       } 
       System.out.println("Close Socket"); 
       providerSocket.close(); 
      } 
      catch(IOException ioException){ 
       ioException.printStackTrace(); 
      } 
     } 
    } 
    void receiveConnection() throws IOException{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     StringBuilder outsb = new StringBuilder(); 
     String line = ""; 
     System.out.println("In Status : Not Null"); 
     System.out.println("In Status : Go To While to Read Line"); 
     while ((line = reader.readLine()) != null) { 
      outsb.append(line); 
      System.out.println(outsb.toString()); 
     } 
     System.out.println(outsb.toString()); 
     reader.close(); 
     System.out.println("Closed Reader"); 
    } 
    void sendMessage(String msg) 
    { 
     byte[] byteS = msg.getBytes(); 
     try{ 
      out.write(byteS); 
      out.flush(); 
      System.out.println("To Server >" + msg); 
     } 
     catch(IOException ioException){ 
      ioException.printStackTrace(); 
     } 
    } 
    public static void main(String args[]) 
    { 
     Provider server = new Provider(); 
     while(true){ 
      server.run(); 
     } 
    } 
} 

MainPage.xaml.cs

namespace WebsocketTest 
{ 
    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
      createSocket(); 
     } 
     public async void createSocket() 
     { 
      MessageWebSocket webSock = new MessageWebSocket(); 
      webSock.Control.MessageType = SocketMessageType.Binary; 
      webSock.MessageReceived += webSock_MsgReceived; 
      webSock.Closed += webSock_Closed; 
      Uri serverUri = new Uri("ws://localhost:9999"); 
      try 
      { 
       await webSock.ConnectAsync(serverUri); 
       tbConnect.Text = "Connected"; 
       webSock_SendMessage(webSock, "Hello"); 
       tbError.Text = "Sent Greeting"; 
      } 
      catch (Exception ex) 
      { 
       tbError.Text = ex.Message + "/" + ex.HResult + "/" + ex.Data; 
      } 
     } 

     private async Task webSock_SendMessage(MessageWebSocket webSock, string m) 
     { 
      BinaryWriter messageWriter = new BinaryWriter((Stream)webSock.OutputStream); 
      messageWriter.Write(m); 
     } 

     private void webSock_Closed(IWebSocket sender, WebSocketClosedEventArgs args) 
     { 

     } 

     private void webSock_MsgReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) 
     { 
      DataReader messageReader = args.GetDataReader(); 
      messageReader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; 
      string messageString = messageReader.ReadString(messageReader.UnconsumedBufferLength); 
      tbReceived.Text = messageString; 
     } 
    } 
} 

現時点では、これらのコードは全く動作しませんが、...私は、送信することはできません両側で読むことができません。

私の質問:私のUWPクライアントからメッセージを送信し、読み方

JAVAサーバーからのメッセージの送受信方法

私は何か助けが必要です...コードサンプル。

+0

が削除されました。 –

+0

このドキュメント:[WebSockets](https://msdn.microsoft.com/en-us/windows/uwp/networking/websockets)および[WebSocketサンプル](https:// github .com/Microsoft/Windows-universal-samples/tree/master/Samples/WebSocket)が役に立ちます。 –

答えて

0

Javaコードは、プレーンTCP/IPソケットを作成し、しない[用WebSocket] [1]、TCP/IPの上でより高いレベルのプロトコルです。

あなたがあなた自身のためのWebSocketを実装するためにどちらかの必要なWebSocketをしたい場合やWebSocketのサーバー機能を提供するJavaライブラリを使用する(行わないあなたは非常にネットワークプログラミングで経験されていない場合に)。 Jetty、Netty、またはJ2EEサーバーがその候補になる可能性があります。

関連する問題