0

このステートメントは何をしますか:

ServerSocket ss=new ServerSocket(4646);

素人の言葉で説明してください。

4

4 に答える 4

1

このステートメントは、指定されたポート (4646) で受信接続をリッスンするよう JVM に効果的に指示します。そのポートへの着信接続を取得し、それらを使用して通常のオブジェクトを構築する必要があるため、それ自体は何の意味もありません。これは、その後、着信Socket/発信データに使用されます。

ServerSocketは、クライアントとサーバー間の実際の TCP ソケットを作成するためのオブジェクトであると言えます。これを作成すると、JVM はオペレーティング システムにフックし、そのポートに到着した接続をプログラムにディスパッチするように指示します。

あなたが通常行うことは次のようなものです:

public AcceptThread extends Thread {
  public void run() {
    ServerSocket ss = new ServerSocket(4646);
    while (true) {
      Socket newConnection = ss.accept();
      ClientThread thread = new ClientThread(newConnection);
      thread.start();
    }
  }
}

着信接続を受け入れ、それらのスレッドを開くようにします。

于 2011-03-29T18:47:46.390 に答える
1

ServerSocketJava docsから直接:

指定されたポートにバインドされたサーバー ソケットを作成します。

サーバーソケットとは?

このクラスは、サーバー ソケットを実装します。サーバー ソケットは、ネットワーク経由で着信する要求を待機します。そのリクエストに基づいて何らかの操作を実行し、場合によってはリクエスタに結果を返します。

于 2011-03-29T18:44:49.037 に答える
1
public ServerSocket(int port) throws IOException

ドキュメンテーション:

指定されたポートにバインドされたサーバー ソケットを作成します。ポート 0 は、空きポートにソケットを作成します。

于 2011-03-29T18:45:20.800 に答える
0

これにより、ServerSocket がローカル マシンのポート 4646 にバインドされます。

次に、この接続でソケットを受け入れることができます

// pick up server side of the socket
Socket s = ss.accept();

これで、クライアントはサーバーに接続し、次のようにソケット接続を確立できます

// pick up client side of the socket, this is in a different program (probably)
Socket connectionToServer = new Socket("myserver",4646);
于 2011-03-29T18:43:05.343 に答える