2017-01-21 7 views
1

処理中にデータ流出サーバーを設定したいので、クライアントがサーバーに文字列を送信し、サーバーが応答します。例えば、クライアント - サーバー "カップケーキ"、次にサーバー - クライアント "カップケーキはおかしく聞こえる"ので、サーバーは文字列に答えます。私はこれをUDPライブラリで試して、サーバ上のポートを開いた。しかし、クライアントのポートを開くことができないため、サーバーがClinetに応答しなければならなかったときは、動作しませんでした。どんな解決策ですか?処理中にデータ流出サーバーを設定する

+0

なぜ 'import processing.net。* 'を使用しないのですか?それはネットワーク化のために処理されたライブラリです –

+0

また、あなたが試したものを投稿することができますか? –

+0

また、私のプログラムをアンドロイドアプリとしてエクスポートしたいと思っています。 processing.netはアンドロイドでは使用できないので、UDPまたはoscp5を使用する必要があります – CupcakeEater

答えて

1

双方向通信が必要なような音がします。

UDPを使用すると、UDPサーバーとクライアントの両方のスケッチが2つ必要です。例:

sketch #1 listens on port 12000 
sketch #1 sends data on port 12001 

sketch #2 listens on port 12001 
sketch #2 sends data on port 12000 

はすることもできます使用のTCPソケット。 サーバとして使用すると、例>ライブラリ>ネットワーク> ChatServer を使用することができます私はChatClient例がありません驚いているが、あなたはこのような何かを離れて取得することができます。

import javax.swing.*; 
import processing.net.*; 

int port = 10002; 

Client myClient; 

void setup() 
{ 
    size(400, 400); 
    textFont(createFont("SanSerif", 16)); 
    myClient = new Client(this, "localhost", port); // Starts a client on port 10002 
    background(0); 
} 

void draw() 
{ 
    background(0); 
    text("client - press ENTER to type\nconnected:"+myClient.active(), 15, 45); 
} 

void keyReleased() { 
    if (keyCode == ENTER) { 
    String message = JOptionPane.showInputDialog(null, "message: ", "TCP Client messaging", JOptionPane.QUESTION_MESSAGE); 
    println(message); 
    if (myClient.active() && message != null) { 
     myClient.write(message); 
    } 
    } 
} 

注:サーバー必要がありますクライアントの前に実行して、クライアントが接続できるようにします。

UDPプロトコルとTCPプロトコルの違いをチェックアウトして、あなたのケースで使用するのが最も理にかなっているものを確認してください(特に、より多くのクライアントを使用するようにパンする場合)。

もう1つの選択肢は、WebSocketsです。これにより、ProcessingでWebSocketサーバーを使用できるようになり、クライアントは別の処理スケッチまたは単にbrowser with WebSocket support(たとえば最新のもの)のいずれかになります

関連する問題