私は自分のPC上で実行している単純なクライアントと私のhtc欲望アンドロイド2.2で簡単なクライアントを持っています。簡単なアンドロイドクライアントとPCサーバーを取得する方法
サーバーとクライアントはどちらも同じポートを使用します。私はクライアントのコードにサーバーのIPをハードコードします。私はAndroid上でクライアントを経由して実行しているサーバーに接続しようとすると、クライアントは、この例外がスローされます。
クライアントコード
InetAddress addr;
Socket socket = null;
byte [] ipAddress = new byte[] {(byte)82,(byte)168,(byte)175,(byte)141};
try{
addr = InetAddress.getByAddress(ipAddress);
socket = new Socket(addr, 1234);
System.out.println("socket = "+socket);
BufferedReader in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);
out.println("hello");
socket.close();
} catch (UnknownHostException e) {
System.out.println("UnknownHostException ...: "+e);
} catch (IOException e) {
System.out.println("IOException ...: "+e);
}
:ここ
IOException ...: java.net.SocketException: The operation timed out.
は、クライアントとサーバーのコードの一部であります、
サーバコード
ServerSocket ss = new ServerSocket(PORT);
System.out.println("Started:"+ss);
try{
//block until a connection occures
Socket socket = ss.accept();
try{
System.out.println("Conncetion accepted:"+socket);
InputStream IS = socket.getInputStream();
InputStreamReader ISR = new InputStreamReader(IS);
BufferedReader in = new BufferedReader(ISR);
OutputStream OS = socket.getOutputStream();
OutputStreamWriter OSR= new OutputStreamWriter(OS);
BufferedWriter BW = new BufferedWriter(OSR);
//output automatically flushed by PrintWriter
PrintWriter out = new PrintWriter(BW,true);
while(true){
String str = in.readLine();
System.out.println("Client: "+str);
out.println("hi");
}
}finally{
System.out.println("Closing...");
socket.close();
}
}finally{
ss.close();
}
このコードはWi-Fiを使用していますが、3gでは使用できません。
何か助けを歓迎しています...事前に感謝します。
げんこ、ご返信ありがとうございます。つまり、NATが存在する場合、tcp接続はありません。それとも解決策がありますか? – mnish
NATはインバウンド(inet-to-PC)接続を許可しません。これに対する解決策はポート転送です。 –