2012-01-28 5 views
1

ポート2649でServerSocketを使用しようとしています。他の人が接続できません。それはlocalhostでうまく動作します。Java - ServerSocketと接続できない

Exception in thread "main" java.net.ConnectException: Connection timed out: connect 
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at Client.main(Client.java:11) 

私はポートが転送されており、自分のコンピュータにファイアウォールを有効にしていません。ポートフォワーディング時に使用した設定を次に示します。

http://i.imgur.com/NLdaA.png

http://i.imgur.com/FJpJQ.png

私はcanyouseeme.org上のポート2649をチェックすると、接続がタイムアウトになりましたと言います。

私もWindows XPを使用しています。どんな助けもありがとうございます。

おかげ

編集:ここでは、ファイアウォールではない場合、私は

import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.io.ObjectOutputStream; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Server { 

    public static void main(String[] args)throws Exception { 
     System.out.println("Starting..."); 
     File file = new File("C:/Testing.txt"); 
     InputStream in = new FileInputStream(file); 
     ServerSocket server = new ServerSocket(2649); 
     System.out.println("Ready for connection"); 
     Socket socket = server.accept(); 
     OutputStream output = socket.getOutputStream(); 
     ObjectOutputStream out = new ObjectOutputStream(output); 
     out.writeObject("C:/Testing.txt"); 
     byte[] buffer = new byte[socket.getSendBufferSize()]; 
     int bytesReceived = 0; 
     while ((bytesReceived = in.read(buffer)) > 0) { 
      output.write(buffer, 0, bytesReceived); 
     } 
     out.flush(); 
     out.close(); 
     in.close(); 
     server.close(); 
     socket.close(); 
     output.flush(); 
     output.close(); 
     System.out.println("Finished"); 
    } 

} 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.ObjectInputStream; 
import java.net.Socket; 

public class Client { 

    public static void main(String[] args) throws Exception { 
     System.out.println("Starting..."); 
     Socket socket = new Socket("IP ADDRESS", 2649); 
     InputStream input = socket.getInputStream(); 
     ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); 
     FileOutputStream out = new FileOutputStream(new File((String) in.readObject())); 
     byte[] buffer = new byte[socket.getReceiveBufferSize()]; 
     int bytesReceived = 0; 
     while ((bytesReceived = input.read(buffer)) > 0) { 
      out.write(buffer, 0, bytesReceived); 
     } 
     in.close(); 
     out.close(); 
     input.close(); 
     socket.close(); 
     System.out.println("Finished"); 
    } 
+0

使用しているコードを投稿できますか? –

+0

これらの設定は、ルータ、またはケーブル/ dslモデム、またはその両方にありますか? – James

+0

@Jamesそれは両方でなければなりません。 – Stripies

答えて

2

を使用していたコードがあります。サーバソケットを0.0.0.0にバインドし、localhostにバインドしないようにしてください。 server.bind(新しいInetSocketAddress( "0.0.0.0"、port))を呼び出してみます。

+0

それは役に立たなかった。 – Stripies

+0

ルーティングまたはファイアウォール。 – ApriOri

+0

サーバソケットのバインド。私はファイアウォールを持っていません。 – Stripies

1

"接続がタイムアウトしました" - >ファイアウォールがパケットを破棄します。おそらくWindowsファイアウォール - それを無効にして、接続できるかどうかを確認してください。

+0

既に無効になっています。 – Stripies

+0

サーバーとクライアントの間に_any_ネットワークデバイスがありますか? –

+0

いいえ、ありません。 – Stripies

関連する問題