2011-01-02 9 views
0

私は携帯電話からコンピュータにデータを送信するための非常に小さなアプリケーションを構築しています。私はいくつかの例を読んで、サーバーとクライアントのコードを動作させました。しかし、私はそれらを接続しようとすると、 "ネットワーク到達不能"エラーが発生しました。どのようなアイデアが私は間違って何ですか?問題をソケットを開く

これは、サーバーのコードです:

import java.net.*; 
import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.io.*; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class Server { 

    static BufferedReader in = null; 
    static Socket clientSocket = null; 
    static ServerSocket serverSocket = null; 

    public static void main(String[] args) throws IOException { 

     JFrame frame = new JFrame("FrameDemo"); 

     frame.addWindowListener(new WindowAdapter() 
     { 
       public void windowClosing(WindowEvent e) 
       { 
        try { 
         if (in != null) 
          in.close(); 
         if (serverSocket.isClosed()) 
          {} 
         else 
          serverSocket.close(); 
        } catch (IOException e1) { 
         e1.printStackTrace(); 
        } 

       } 
     }); 
     JLabel Label = new JLabel(""); 
     Label.setPreferredSize(new Dimension(175, 100)); 
     frame.getContentPane().add(Label, BorderLayout.CENTER); 

     //Display the window. 
     frame.pack(); 
     frame.setVisible(true); 

     Label.setText("Empezo"); 




     serverSocket = null; 
     try { 
      serverSocket = new ServerSocket(4444); 
     } catch (IOException e) { 
      System.err.println("Could not listen on port: 4444."); 
      System.err.println(e.getMessage()); 
      System.exit(1); 
     } 
     Integer puerto = serverSocket.getLocalPort(); 
     Label.setText("<html>Puerto Abierto: " + puerto.toString() + "<br>IP Servidor: " + serverSocket.getInetAddress().toString() + "</html>"); 

     clientSocket = null; 
     try { 
      clientSocket = serverSocket.accept(); 
      Label.setText("Conection Accepted"); 
     } catch (IOException e) { 
      System.err.println("Accept failed."); 
      System.exit(1); 
     } 

     in = new BufferedReader(
       new InputStreamReader(
       clientSocket.getInputStream())); 

     while ((in.readLine()) != null) { 
      System.out.println("Mensaje: " + in.readLine()); 
     } 

    } 


} 

そしてCliente部分

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.Socket; 


public class PruebaSocket extends Activity { 
    /** Called when the activity is first created. */ 

    Socket Skt; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button Enviar =(Button)findViewById(R.id.OK); 
     Button Salir = (Button)findViewById(R.id.SALIR); 
     final TextView IP = (TextView)findViewById(R.id.IP); 
     Skt = new Socket(); 

     Enviar.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 
       try{ 
        Skt = new Socket("192.168.1.101",4444); 
        CharSequence errorMessage = "Coneccted"; 
        Toast.makeText(PruebaSocket.this, errorMessage, Toast.LENGTH_SHORT).show(); 

       } 

       catch(Exception E) 
       { 
        CharSequence errorMessage = E.getMessage(); 
        Toast.makeText(PruebaSocket.this, errorMessage, Toast.LENGTH_SHORT).show(); 
        if (Skt.isConnected()) 
         try { 
          Skt.close(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 


       } 

      } 
     }); 

     Salir.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 

       try { 
        Skt.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 

     } 
     ); 

    } 
} 

192.168.1.101それはサーバーのIPです。

答えて

0

Javaソケットについてよくわかりませんが、ソケットの通常の使用法はcreate、bind、listenモード(udp)またはput .accept()(tcp)です。私もJavaが結合フェーズ - http://download.oracle.com/javase/1.5.0/docs/api/java/net/ServerSocket.html#bind(java.net.SocketAddress、intを持っていることがわかります。

+0

私が見つけたすべての例では、新しいソケット(..)を使用してサーバーを作成し、サーバーに接続します。 –

+0

Skt = new Socket( "127.0.0.1"、4444);クライアントサイドでそれが動作するかどうかを確認してください。 – kellogs

+0

私は "Skt = new Socket(" 127.0.0.1 "、4444);"それは "接続が拒否されました"と言われています –