2014-01-18 3 views
1

Я пытаюсь создать клиентское приложение Android, которое подключается к серверу на моем рабочем столе.
Я успешно подключился к серверу с моего ноутбука.
Я установил разрешения INTERNET и NETWORK в файле манифеста.
Программа вылетает при создании сокета, а debuuger eclipse возвращает меня в исходный файл socket.class.не удалось создать клиентский сокет для Android

UPDATE: вот мой полный код

public class EsmFamilActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_esm_famil); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.esm_famil, menu); 
    return true; 
} 

//handler for sendtoserver 
public void sendToServer(View view){ 

    ... 


    String host = "192.168.1.7"; 
    int port = 8888; 
    try{ 
     Socket s = new Socket(host, port); 
     Writer out = new OutputStreamWriter(s.getOutputStream()); 
     out.write(data + "\n"); 
     out.flush(); 
     s.close(); 
    }catch (UnknownHostException ex) { 
     ex.printStackTrace(); 
    }catch(IOException ex){ 
     ex.printStackTrace(); 
    } 

} 

}

и вот мой LogCat

01-18 21:43:06.908: D/TextView(1608): Constructor -- Got mEditTextBackgroundColor 
01-18 21:43:09.658: W/IInputConnectionWrapper(1608): beginBatchEdit on inactive InputConnection 
01-18 21:43:09.668: W/IInputConnectionWrapper(1608): endBatchEdit on inactive InputConnection 
01-18 21:43:11.448: W/IInputConnectionWrapper(1608): beginBatchEdit on inactive InputConnection 
01-18 21:43:11.448: W/IInputConnectionWrapper(1608): endBatchEdit on inactive InputConnection 
01-18 21:43:46.018: D/AndroidRuntime(1608): Shutting down VM 
01-18 21:43:46.018: W/dalvikvm(1608): threadid=1: thread exiting with uncaught exception (group=0x42f02500) 
01-18 21:43:46.038: E/AndroidRuntime(1608): FATAL EXCEPTION: main 
01-18 21:43:46.038: E/AndroidRuntime(1608): java.lang.IllegalStateException: Could not execute method of the activity 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.view.View$1.onClick(View.java:3678) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.view.View.performClick(View.java:4300) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.view.View$PerformClick.run(View.java:18026) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.os.Handler.handleCallback(Handler.java:730) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.os.Looper.loop(Looper.java:150) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.app.ActivityThread.main(ActivityThread.java:5162) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.lang.reflect.Method.invoke(Method.java:525) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at dalvik.system.NativeStart.main(Native Method) 
01-18 21:43:46.038: E/AndroidRuntime(1608): Caused by: java.lang.reflect.InvocationTargetException 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.lang.reflect.Method.invoke(Method.java:525) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.view.View$1.onClick(View.java:3673) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  ... 11 more 
01-18 21:43:46.038: E/AndroidRuntime(1608): Caused by: android.os.NetworkOnMainThreadException 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at libcore.io.IoBridge.connect(IoBridge.java:112) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.net.Socket.startupSocket(Socket.java:566) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.net.Socket.tryAllAddresses(Socket.java:127) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.net.Socket.<init>(Socket.java:177) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at java.net.Socket.<init>(Socket.java:149) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  at com.example.myfirstapp.EsmFamilActivity.sendToServer(EsmFamilActivity.java:61) 
01-18 21:43:46.038: E/AndroidRuntime(1608):  ... 14 more 
01-18 21:43:53.518: I/Process(1608): Sending signal. PID: 1608 SIG: 9 
01-18 21:43:53.668: D/TextView(2467): Constructor - Got Res id for appearance for textColorPrimaryInverse 
01-18 21:43:53.668: W/ResourceType(2467): Skipping entry 0x1060085 in package table 0 because it is not complex! 
01-18 21:43:53.668: D/TextView(2467): Constructor - Got appearance for textColorPrimaryInverse 
01-18 21:43:53.668: D/TextView(2467): Constructor -- Got mEditTextBackgroundColor 
01-18 21:43:53.998: D/libEGL(2467): loaded /vendor/lib/egl/libEGL_POWERVR_SGX544_115.so 
01-18 21:43:54.078: D/libEGL(2467): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX544_115.so 
01-18 21:43:54.088: D/libEGL(2467): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX544_115.so 
01-18 21:43:54.088: E/IMGSRV(2467): :0: PVRDRMOpen: TP3, ret = 42 
01-18 21:43:54.098: E/IMGSRV(2467): :0: PVRDRMOpen: TP3, ret = 45 
01-18 21:43:54.098: E/IMGSRV(2467): :0: PVRDRMOpen: TP3, ret = 46 
01-18 21:43:54.098: E/IMGSRV(2467): :0: PVRDRMOpen: TP3, ret = 46 
01-18 21:43:54.098: E/IMGSRV(2467): :0: PVRDRMOpen: TP3, ret = 46 
01-18 21:43:54.108: E/IMGSRV(2467): :0: PVRDRMOpen: TP3, ret = 48 
01-18 21:43:54.138: D/OpenGLRenderer(2467): Enabling debug mode 0 
+0

«Ошибка программы» Какие сообщения об ошибках вы получаете? Отправьте свой логарифм. – csmckelvey

+1

Посмотрите ['AsyncTask'] (http://developer.android.com/training/basics/network-ops/connecting.html#AsyncTask), вы получаете« NetworkOnMainThreadException ». – zapl

+0

Вы правы noloader, мой вопрос является дубликатом вопроса, который вы упомянули. Я не мог найти OnMainThreadException в logcat. Прости. –

ответ

0

я понял, что андроид приложение работает в эмуляторе на сервер. Поэтому в первую очередь вам нужно изменить, что IP LAN 192.168.x.x

Blockquote При работе с Android эмулятор, вы часто требуется доступ к данным , размещенных на локальном веб-сервере, используя локальный. Например, ваши собственные веб-службы , скорее всего, будут размещены на вашем локальном компьютере во время разработки, и вы будете тестировать их на той же машине разработки, которую вы используете для написания приложений Android . В таких случаях вы должны использовать специальный IP-адрес 10.0.2.2 (не 127.0.0.1), чтобы обратиться к интерфейсу loopback хост-компьютера. С точки зрения эмулятора Android localhost (127.0.0.1) относится к собственному интерфейсу loopback.

цит http://p2p.wrox.com/book-beginning-android-application-development-631/

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

serverAddress = 
InetAddress.getByName(“192.168.1.142”); 
//--remember to change the IP address above to match your own-- and also the port 
socket = new Socket(serverAddress, 500); 

А также я asumming вас «Выполнение внутри расширенного класса AsyncTask.

+0

Нет, я запускаю приложение с моего планшета asus fonepad, подключенного к моему рабочему столу. Я тестировал с помощью InetAddress, но это не сработало. –

Смежные вопросы