-3

サーバーソケットを使用せずに2つのソケット間の通信を構築しようとしています。サーバーソケットには、着信接続を待機するServerSocket.accept()メソッドがあることを知っています。しかし、サーバーソケットを持たないIPに対してソケットを開こうとすると、例外が発生し続けます。

java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    at client1.<init>(client1.java:13)
    at client1Main.main(client1Main.java:9)

これは、imが実行する最初のコードです。

public class client1 {
    public client1() {
        try {
            Socket socket = new Socket("127.0.0.1",15123);
             BufferedReader in 
                = new BufferedReader(
                      new InputStreamReader(
                          socket.getInputStream()));
              PrintWriter out 
                = new PrintWriter(
                      new OutputStreamWriter(
                          socket.getOutputStream())); 
              while(true) {
                  System.out.println(in.readLine());
              }
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

public class client1Main {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    new client1();
}

}

私が欠けているものはありますか?

4

2 に答える 2

2

仕事に間違ったツールを使用しています。ServerSocket使用していないということは、TCPを使用しないことを示唆しています。これでUDPが残ります。つまり、使用に切り替える必要がありますDatagramSocket

于 2012-12-21T16:31:24.817 に答える
0

あなたは単にそれをすることはできません。

接続しようとしているポートでリッスンするものが必要です。これはサーバーソケットで行われます。

TCPの回避策はありません。

于 2012-12-21T16:29:34.423 に答える