Проблема с открытием сокета - PullRequest
0 голосов
/ 03 января 2011

Я создаю очень маленькое приложение для отправки данных с мобильного телефона на компьютер.Я прочитал несколько примеров и получил код сервера и клиента.Но когда я пытаюсь подключить их, появляется сообщение об ошибке «сеть недоступна».Любая идея, что я делаю неправильно ??

Это код сервера:

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());
        }

    }


}

И часть клиента

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сервер.

1 Ответ

0 голосов
/ 03 января 2011

Я не знаю много о java-сокетах, но обычно используется сокет: create, bind и перевод в режим прослушивания (udp) или вызов .accept () (tcp).Я вижу, что у Java также есть фаза привязки - http://download.oracle.com/javase/1.5.0/docs/api/java/net/ServerSocket.html#bind(java.net.SocketAddress, int).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...