Android Socket发送信息时闪退

尝试Android写Socket通信的时候,遇到的个坑,记录一下:

1、无法建立连接。

  原因:没有添加网络使用权限请求;

  解决方式:在"AndroidMainfest.xml"中添加<uses-permission android:name="android.permission.INTERNET"/>

2、建立连接后正常接收信息,但发送信息时直接闪退,LogCat中异常提示为:android.os.NetworkOnMainThreadException

  原因:百度了一圈,发现是在Android 7版本后才出现的,对主线程上的一个TCP Socket的写入操作严格检查,也就是不能在主线程中进行Socket写入发送。

  解决方式:新建线程发送。

3、新建发送信息的线程,仍然闪退

  原因:输出流也需要在新建的线程中new一个

成功发送的代码如下

new Thread(new Runnable(){
                    @Override
                    public void run() {
                        try {
                            //输出流写入发送编辑框的信息并指定类型UTF-8,注意要加换行
                            String str="TestString";

                            if(socket==null) return;
                            BufferedWriter outputStream=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                            outputStream.write(str);
                            //输出流发送至服务器
                            outputStream.flush();

                        } catch (UnsupportedEncodingException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }).start();

原文地址:https://www.cnblogs.com/Elvis-Luo/p/11640796.html

时间: 2024-10-19 02:21:41

Android Socket发送信息时闪退的相关文章

Android使用百度地图出现闪退及定位时显示蓝屏问题

 目录 1.Android使用百度地图出现闪退 2.Android使用百度地图定位出现蓝屏问题     1.Android使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.xml文件中未在application标签中配置 <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="D9Lh8MrrLMUuXdWMU8tRLtDsta6PoaYN" /> 但是

Android Socket 发送广播包的那些坑

Socket广播包经常被用于局域网内的两台设备之间互相发现和消息传递,在Android应用开发过程中,也经常会遇到这样的需求,例如:两台Android设备之间.Android与手环等智能硬件之间.Android与Windows电脑之间等等. 本文主要介绍在Android中使用Socket开发广播包程序时需要注意的编程事项,以及解决方法. 首先给出一段Android发送广播包的示例代码: DatagramSocket socket = new DatagramSocket(8000); socke

[OBPG]打印时闪退问题

1. 使用的是Office批量打印精灵1.2版,软件可以打开 2. Win8.1 MSDN原版操作系统,系统重装了,.NET Framework也装了 3. 使用真实打印机打印,打印时闪退,没有任何提示 4. 安装PDFFactory虚拟打印机,使用该打印机打印,打印时也闪退 远程协助时发现,其使用的是WPS,遂让其安装Microsoft Office后可以正常使用了.

xcode编辑时闪退的问题解决

KSImageName导致的xcode编辑时闪退的问题解决 尝试在Xcode 7.3 中导入了KSImageName插件  但是xcode升级后编辑代码时就闪退了,问题还是KSImageName插件的问题 以下的方案同时适用 KSImageName插件报错问题 有两种解决方案: 一.很暴力的方法 找到 KSImageName插件直接删除,KSImageName插件的路径下面有介绍 二.找到KSImageName插件的 info.plist文件中的 DVTPlugInCompatibilityUU

解决Jboss打开run.bat时闪退不能启动的方法

刚开始学EJB的同学总是需要安装Jboss,而Jboss安装后却经常发生打开run.bat时闪退不能启动的问题,下面就来谈谈如何解决这个问题. 主要有5步. 1. Jdk安装 首先你要保证你已经成功配置了jdk 我想学到jboss的各位应该都玩过java了..这里就不将怎么配置了,上网找一丢丢. 2. Java环境变量配置[关键] 首先要保证本机安装的Jdk和环境变量Java_Home中指向的路径一致.原因是很多同学在本机上装了多次jdk,而不是每个jdk安装文件都会覆盖掉之前的jdk,这样就会

tomcat单独启动时闪退的解决办法,以及修改端口8080为80,

tomcat单独启动时闪退的解决办法: 点击" startup",马上就闪退了:原因一般都是没有配置%JAVA_HOME%和tomcat的环境变量造成的: 很简单: 在startup.bat那个文件下,编辑点进去之后,在最上边的echo off上面加上: SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_60 SET TOMCAT_HOME=C:\apache-tomcat-7.0.53 然后shutdown.bat里面也要加上这两句话: 然后重

Android实例-发送信息

(1)项目结构: package com.example.messagesender; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.support.v4.widget.SimpleCursorAdapter.ViewBinder; import android.telephony.gsm.SmsManager; import android.vi

Xamarin Android项目真机测试闪退

Xamarin Android项目真机测试闪退 项目在模拟器中运行正常,但在真机上闪退.这是由于项目设置使用共享的Mono运行时.Visual Studio中,在项目属性-Android Options总,不要勾选Use Shared Runtime.Xamarin Studio中,在工程选项-构建-Android Build选项中,不要勾选Use shared Mono runtime.

Xcode 10 正在编辑时 闪退

1.Xcode 10 正在编辑时 闪退 好在Xcode做了很好的及时保存机制和现场恢复措施,就算突然闪退,重新打开Xcode 还能看到之前的代码. 可以让Xcode的工程编译设置恢复成Xcode 之前的. File ---> workspace settings --->build system 改成legacy Build System 2.Xcode10:library not found for -lstdc++.6.0.9 Xcode10报错之libstdc++.6.0.9.tbd未找