質問

Java では、常にリッスンしているポートを開いて、パケットの受信時に送信するのが最善の方法です。私は現時点ではネットワーク プログラミングにあまり詳しくないので、ネットで見つけたチュートリアルはあまり役に立ちません。

リスニングソケットをサーバーソケットとして使用し、サーバーにデータを送信するために使用しているソケットとは別のスレッドでそれを実行することは理にかなっていますか?

大まかに関連した質問で。単純にJava用にプログラミングし、NetBeansでそれをブラックベリーで使用するために(プラグインを使用して)エクスポートしてもソケットが機能するかどうかを誰かが知っていますか?

役に立ちましたか?

解決

スレッド化に余裕がある場合は、これを試してください (例外処理やスレッドの扱い方などの詳細は省略していることに注意してください)。調べてみるとよいでしょう SocketChannels および/またはNIO非同期ソケット/セレクター。これで始められるはずです。

boolean finished = false;
int port = 10000;
ServerSocket server = new ServerSocket(port);

while (!finished) {
    // This will block until a connection is made
    Socket s = server.accept();
    // Spawn off some thread (or use a thread pool) to handle this socket
    // Server will continue to listen
}

他のヒント

Blackberry への接続に関しては、ほとんどの場合、Blackberry にはパブリック IP アドレスがなく、代わりに WAP ゲートウェイまたはワイヤレス プロバイダーのアクセス ポイント サーバーの背後にあるため、これが問題になります。RIM は、これを回避し、Blackberry で ServerSocket セマンティクスを使用する「プッシュ」データを提供するモバイル データ サーバー (MDS) を提供します。MDS は、Blackberry Enterprise Server (BES) および Unite Server で使用できます。

セットアップが完了すると、HTTP プロトコルを使用して MDS 経由でデータを特定のユニットに送信できます。Push プロトコルについては優れた説明があります ここ LAMPソースコード付き。パラメータ PORT=7874 プッシュアウト.pl Blackberry Browser Push サーバー ソケットに接続します。このパラメータを変更することで、独自の ServerSocket が接続を受け付けている任意のポートにペイロードを送信できます。

ソケット コードを BlackBerry 上で実行する必要がある場合は、標準の Java ソケットを使用できません。両方のタイプのソケット (BlackBerry から接続を開始するソケットと、BlackBerry で接続/プッシュをリッスンするソケット) を作成するには、J2ME Con​​nector.open API を使用する必要があります。RIM の JDE に付属するサンプルを見てください。

これに関しても基本に立ち返る必要があります。オライリーの優れた製品をお勧めします Java の概要 これには、まさにそのような場合のコード例が含まれています(利用可能) オンライン 同じように)。早い段階で行うべき決定の概要については、第 7 章を​​参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top