Android-Socket的最基础实现以及遇见在2.3可用4.3不可用的解决方法

来源:互联网 发布:mac的解压rar软件 编辑:程序博客网 时间:2024/06/06 12:46

//服务器Service

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Test {public static void main(String[] args) {Thread socketservice=new Thread(new Socket00());socketservice.start();}}class Socket00 implements Runnable{@Overridepublic void run() {try {ServerSocket serverSocket=new ServerSocket(54321);while(true){System.out.println(11);Socket client=serverSocket.accept();//接受客户端请求BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));String message1 = in.readLine();//读取一行数据/** 处理数据设为str*/String str="OK";//返回消息PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);out.println(str);in.close();out.close();client.close();}} catch (IOException e) {e.printStackTrace();}}}

//客户端(布局就一个TextView 一个Button)

import java.io.*;import java.net.Socket;import net.testSocket.R;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;//客户端的实现public class TestSocket extends Activity {private TextView text1;private Button but1;private EditText edit1;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                text1=(TextView)findViewById(R.id.text1);        but1=(Button)findViewById(R.id.but1);        edit1=(EditText)findViewById(R.id.edit);                but1.setOnClickListener(new alistener());            }         class alistener implements OnClickListener{@Overridepublic void onClick(View v) {Socket socket=null;String mesg=edit1.getText().toString()+"\r\n";edit1.setText("");try {socket=new Socket("192.168.1.102",54321);//同一局域网的ip地址和服务器的端口号//向服务器发送信息PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);out.println(mesg);//接受服务器的信息BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));String mstr=br.readLine();System.out.println(mstr);out.close();br.close();socket.close();} catch(Exception e){System.out.println("ERROR");}}}}

//本人遇见过2.3可用,4.1不可用,解决如下:

android 4.0以上不能在主线程使用网络,因为会造成假死,需要创建一个线程去执行网络任务

即在客户端,按下按钮的监听里不要写执行方法,而是写一个多线程,**thread.start,在那里执行

在4.0中,使用Toast最好利用handler


//在AndroidManifest.xml加入<uses-permission android:name="android.permission.INTERNET" />





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 早晚出去胳膊脚觉得凉怎么办 腿凉感觉冒凉气怎么办 冬天腿被冻夏天发酸发凉怎么办 宿舍一楼虫子多怎么办 有虫子在咬床板怎么办 床板上的虫咬了怎么办 住的房间有臭虫怎么办 租的房子有臭虫怎么办 瑜伽垫放地上脏怎么办 瑜伽垫和地面滑怎么办 练瑜伽时瑜伽垫全是汗水怎么办 车钥匙放洗衣机洗了怎么办 瑜伽垫边上掉渣怎么办 晚上睡地上后背不舒服怎么办 小孩子天天晚上看电视不睡觉怎么办 宝宝天天晚上不睡觉怎么办 老公天天晚上不睡觉怎么办 小孩天天晚上不睡觉怎么办 摸了貔貅的眼睛怎么办 买的爬行垫滑怎么办 买了爬行垫有毒怎么办 xpe爬行垫破了怎么办 做瑜伽时平衡不好怎么办 鼻翼两侧发红长痘怎么办 孕后期睡觉背疼怎么办 练了瑜伽后腰痛怎么办 尿路口长疮疼痛怎么办 来月经吃了辣的怎么办 泳衣打湿后特别难脱怎么办 脚臭怎么办教你除臭方法 袜子没干就穿了进湿气怎么办 狗喜欢往床上跑怎么办 泰迪在床上睡觉怎么办 泰迪睡觉换地方怎么办 猫一定要和人睡怎么办 狗喜欢跳到床上怎么办 幼猫晚上不睡觉怎么办 宝宝不在床上睡觉怎么办呢 瑜伽球表面粘了怎么办 鞋子洗了很臭怎么办 在社区开瑜伽馆怎么办