Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 套接字客户端程序错误_Android - Fatal编程技术网

Android 套接字客户端程序错误

Android 套接字客户端程序错误,android,Android,程序运行后,点击发送按钮,弹出的对话框显示程序已经退出 我不知道是什么问题,我怎样才能解决它 有没有人有同样的问题,你能帮我吗 package com.secion9.clienttest; import android.os.Bundle; import android.app.Activity; import android.widget.*; import java.net.Socket; import java.io.IOException; import java.io.Output

程序运行后,点击发送按钮,弹出的对话框显示程序已经退出

我不知道是什么问题,我怎样才能解决它 有没有人有同样的问题,你能帮我吗

package com.secion9.clienttest;

import android.os.Bundle;
import android.app.Activity;
import android.widget.*;
import java.net.Socket;
import java.io.IOException;
import java.io.OutputStream;
import android.view.View;
import android.view.View.OnClickListener;
public class ClientActivity extends Activity {

Button btSend;
EditText etMsg;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_client);
  btSend=(Button)this.findViewById(R.id.button1);
  etMsg=(EditText)this.findViewById(R.id.EditText1);
  btSend.setOnClickListener(
  new OnClickListener(){
  public void onClick(View v)
  {
try
{

Socket socket=new Socket("127.0.0.1",5050);
OutputStream outputStream=socket.getOutputStream();
byte[] buffer=etMsg.getText().toString().getBytes();
outputStream.write(buffer);
outputStream.flush();

}
catch(IOException e)
{
e.printStackTrace();
}
  }
  });
  }
}
logcat

09-02 08:24:31.189: E/Trace(627): error opening trace file: No such file or directory (2)
09-02 08:24:32.259: D/gralloc_goldfish(627): Emulator without GPU emulation detected.
09-02 08:24:32.598: I/Choreographer(627): Skipped 40 frames! The application may be doing too much work on its main thread.
09-02 08:25:04.471: D/AndroidRuntime(627): Shutting down VM
09-02 08:25:04.471: W/dalvikvm(627): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
09-02 08:25:04.539: E/AndroidRuntime(627): FATAL EXCEPTION: main
09-02 08:25:04.539: E/AndroidRuntime(627): android.os.NetworkOnMainThreadException
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
09-02 08:25:04.539: E/AndroidRuntime(627): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
09-02 08:25:04.539: E/AndroidRuntime(627): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
09-02 08:25:04.539: E/AndroidRuntime(627): at libcore.io.IoBridge.connect(IoBridge.java:112)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.startupSocket(Socket.java:566)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.tryAllAddresses(Socket.java:127)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.<init>(Socket.java:177)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.<init>(Socket.java:149)
09-02 08:25:04.539: E/AndroidRuntime(627): at com.secion9.clienttest.ClientActivity$1.onClick(ClientActivity.java:31)
09-02 08:25:04.539: E/AndroidRuntime(627): at android.view.View.performClick(View.java:4084)
09-02 08:25:04.539: E/AndroidRuntime(627): at android.view.View$PerformClick.run(View.java:16966)
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.Handler.handleCallback(Handler.java:615)
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.Handler.dispatchMessage(Handler.java:92)
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.Looper.loop(Looper.java:137)
09-02 08:25:04.539: E/AndroidRuntime(627): at android.app.ActivityThread.main(ActivityThread.java:4745)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.lang.reflect.Method.invokeNative(Native Method)
09-02 08:25:04.539: E/AndroidRuntime(627): at java.lang.reflect.Method.invoke(Method.java:511)
09-02 08:25:04.539: E/AndroidRuntime(627): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-02 08:25:04.539: E/AndroidRuntime(627): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-02 08:25:04.539: E/AndroidRuntime(627): at dalvik.system.NativeStart.main(Native Method)
09-02 08:25:07.079: I/Process(627): Sending signal. PID: 627 SIG: 9
09-02 08:24:31.189:E/Trace(627):打开跟踪文件时出错:没有这样的文件或目录(2)
09-02 08:24:32.259:D/gralloc_金鱼(627):未检测到GPU仿真的仿真器。
09-02 08:24:32.598:I/编舞(627):跳过了40帧!应用程序可能在其主线程上做了太多工作。
09-02 08:25:04.471:D/AndroidRuntime(627):关闭虚拟机
09-02 08:25:04.471:W/dalvikvm(627):threadid=1:线程以未捕获异常退出(组=0x40a13300)
09-02 08:25:04.539:E/AndroidRuntime(627):致命异常:主
09-02 08:25:04.539:E/AndroidRuntime(627):android.os.NetworkOnMainThreadException
09-02 08:25:04.539:E/AndroidRuntime(627):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
09-02 08:25:04.539:E/AndroidRuntime(627):在libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)上
09-02 08:25:04.539:E/AndroidRuntime(627):在libcore.io.IoBridge.connecterno(IoBridge.java:127)
09-02 08:25:04.539:E/AndroidRuntime(627):在libcore.io.IoBridge.connect(IoBridge.java:112)上
09-02 08:25:04.539:E/AndroidRuntime(627):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
09-02 08:25:04.539:E/AndroidRuntime(627):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
09-02 08:25:04.539:E/AndroidRuntime(627):位于java.net.Socket.startupSocket(Socket.java:566)
09-02 08:25:04.539:E/AndroidRuntime(627):位于java.net.Socket.tryalladdress(Socket.java:127)
09-02 08:25:04.539:E/AndroidRuntime(627):位于java.net.Socket(Socket.java:177)
09-02 08:25:04.539:E/AndroidRuntime(627):位于java.net.Socket(Socket.java:149)
09-02 08:25:04.539:E/AndroidRuntime(627):在com.secion9.clienttest.ClientActivity$1.onClick(ClientActivity.java:31)
09-02 08:25:04.539:E/AndroidRuntime(627):在android.view.view.performClick(view.java:4084)上
09-02 08:25:04.539:E/AndroidRuntime(627):在android.view.view$PerformClick.run(view.java:16966)
09-02 08:25:04.539:E/AndroidRuntime(627):在android.os.Handler.handleCallback(Handler.java:615)上
09-02 08:25:04.539:E/AndroidRuntime(627):在android.os.Handler.dispatchMessage(Handler.java:92)上
09-02 08:25:04.539:E/AndroidRuntime(627):在android.os.Looper.loop(Looper.java:137)
09-02 08:25:04.539:E/AndroidRuntime(627):位于android.app.ActivityThread.main(ActivityThread.java:4745)
09-02 08:25:04.539:E/AndroidRuntime(627):位于java.lang.reflect.Method.Invokenactive(本机方法)
09-02 08:25:04.539:E/AndroidRuntime(627):位于java.lang.reflect.Method.invoke(Method.java:511)
09-02 08:25:04.539:E/AndroidRuntime(627):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-02 08:25:04.539:E/AndroidRuntime(627):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-02 08:25:04.539:E/AndroidRuntime(627):在dalvik.system.NativeStart.main(本机方法)
09-02 08:25:07.079:I/进程(627):发送信号。PID:627信号:9

是否已在AndroidManifest.xml中输入Internet权限

问候,

Skipped 40 frames! The application may be doing too much work on its main thread.

是否有人告诉你,你正在阻止主线程,这会导致ANR和应用程序被杀死:)


尝试在后台线程上实现您的网络功能,或者使用异步任务

这听起来像是在主线程上进行联网。这是一个否定:

解决方案:

修改您的应用程序,使其产生一个线程或异步任务来执行网络I/O

这里有一个很好的链接,讨论了如何:


根据[Android开发者][1]上的文档:

当应用程序尝试执行异常时引发的异常 在其主线程上进行网络操作

这仅适用于针对蜂巢SDK或 较高的。允许针对早期SDK版本的应用程序执行以下操作 在他们的主事件循环线程上建立网络,但它非常复杂 气馁


因此,您需要针对较低的SDK或创建一个新线程来处理网络连接。

从3.0版开始,在严格模式策略中,您不能在主线程上运行n/w更改为异步任务Google NetworkOnMainException。这是一个已知的陷阱。
NetworkOnMainThreadException