2013-03-08 8 views
0

Я видел несколько из этих вопросов, но ни один из ответов, похоже, не разрешил мою проблему. Я хочу отобразить сообщение на своем сервере (ПК) у моего клиента (телефон Android, у меня есть физическое устройство ). У меня есть очень простой сервер ПК:Розетки с Android-клиентом и сервером ПК

public void run(int port) throws Exception 
{ 
    ServerSocket ss = new ServerSocket(port); 
    Socket sock = ss.accept(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(sock.getInputStream())); 

    System.out.println(reader.readLine()); 
} 

(В моей главной пустоте):

Server s = new Server(); 
s.run(4444); 

И очень простой Android клиента:

package com.j03.client; 

import android.app.*; 
import android.os.*; 
import android.view.*; 
import android.widget.*; 
import java.io.*; 
import java.net.*; 

public class MainActivity extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     try 
     { 
      runClient("10.0.2.2", 4444, "hey"); 
     } 
     catch (Exception e) 
     { 
      TextView t = new TextView(this); 
      t.setText(e.getMessage()); 
      setContentView(t); 
     } 
    } 

    public static void runClient(String ip, int port, String message) throws Exception 
    { 
     Socket sock = new Socket(ip, port); 
     PrintStream ps = new PrintStream(sock.getOutputStream()); 
     ps.println(message); 
    } 
} 

Я также надлежащий интернет разрешений в моем файле манифеста:

<uses-permission android:name="android.permission.INTERNET"/> 

И клиентский код отлично работает как клиент ПК. (ПК-клиент на ПК-сервер работает отлично).

но я не могу заставить его работать на Android!

ПК-сервер просто ничего не отображает. :(

Кто-нибудь знает, что я могу делать неправильно?

+0

Вы только настройки TextView, когда есть Исключение. Если все работает правильно, вы никогда ничего не показываете на экране. – elevine

+0

W hen 'runClient()' называется, он должен отправить сообщение на сервер. Исключение показывает любые ошибки (которые он сделал, прежде чем я добавил правильные разрешения для моего манифеста). Клиент не должен отображать текст. –

+0

Итак, что именно не работает? Похоже, проблема заключалась в том, что «я просто получаю пустой экран». – elevine

ответ

0

Вы также могли бы делать все это в потоке пользовательского интерфейса. Я думаю, что андроид иногда будет убивать ваше приложение, если вы сделаете это и отображение приложения не отвечают диалоги.

другой плакат также правильно о вашей деятельности порожняком, пока не произойдет исключение. Я хотел бы исправить, и попробуйте запустить отдельный поток с вашим runClient в нем

+0

Я попробую это спасибо. Но мое приложение для Android никогда не заставляет закрывать. –