送信する情報は、Androidソケットをフラッシュバック

Androidのソケット通信を書き込もうとすると、ピットが発生し、それを記録します。

1、接続を確立することはできません。

  原因:ネットワークは、アクセス権の要求を追加しませんでした。

  ソリューション:には"AndroidMainfest.xml"を追加し、<-permissionが使用するアンドロイド:名= "android.permission.INTERNETあなたandroid.permission.ACCESS_NETWORK_STATEの" />

 

図2に示すように、接続が正常に確立された情報を受信するが、情報は、バック示唆LogCat異常をフラッシュ直接送信された後:android.os.NetworkOnMainThreadException

  理由:Baiduのアンドロイド7の後のバージョンに存在することが判明した円、中には、ソケットは、メインスレッドに送信書き込むことができない、つまり、厳格な審査のメインスレッド上のTCPソケットに書き込みます。

  解決策:新しいスレッドを送信します。

3.フラッシュバック、まだ、新しい情報が送信されているスレッド

  理由:あなたは新しいスレッドで新しい出力ストリームを必要とします

次のようにタグが正常に送信します

 

(Runnableを新新(){新しい新しいスレッド
                    @Override 
                    公共ボイドRUN(){ 
                        試み{ 
                            //書き込み出力ストリームとラップ関心を高めるために、UTF-8を指定した編集ボックスタイプを送信する
                            文字列STR =「たTestStringを」; 

                            IF(ソケットヌル==)リターン; 
                            BufferedWriterの、OutputStreamのBufferedWriterの、新しい新=(新新のOutputStreamWriter(Socket.getOutputStream())); 
                            OutputStream.write(STR); 
                            サーバに送信//出力ストリーム
                            outputStream.flush(); 
                            e.printStackTrace();
 
                        }キャッチ(にUnsupportedEncodingException E){
                            // TODO自動生成されたcatchブロック
                        }キャッチ(IOExceptionを電子){ 
                            // TODO自動生成キャッチブロック
                            e.printStackTrace(); 
                        } 
                    } 
                }))(始めます。

 

おすすめ

転載: www.cnblogs.com/Elvis-Luo/p/11640796.html