首页 java Android socket 多线程 小结

java Android socket 多线程 小结

举报
开通vip

java Android socket 多线程 小结java Android socket 多线程 小结 java Android socket 多线程 总结 今天做了一个多线程的例子,多个Android手机和电脑通信。 首先要说的时候 我的一个理解误区,也是我最大的收获。 先说一下socket,比如 while(true){ Socket sc=ServerSocker.accept(); , 我一直以为这个阻塞是自己的while循环产生的,后来差资料发现,accept()方法自己产生阻塞, 也就说 进入while循环以后,代码会停在 Socket...

java Android socket 多线程 小结
java Android socket 多线程 小结 java Android socket 多线程 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 今天做了一个多线程的例子,多个Android手机和电脑通信。 首先要说的时候 我的一个理解误区,也是我最大的收获。 先说一下socket,比如 while(true){ Socket sc=ServerSocker.accept(); , 我一直以为这个阻塞是自己的while循环产生的,后来差资料发现,accept()方法自己产生阻塞, 也就说 进入while循环以后,代码会停在 Socket sc=ServerSocker.accept();这一行,知道有链接请求,才会进入下一个循环,继续等待连接,在那里阻塞。 这个while 循环是为了多个客户端链接,每一个链接都会得到一个Socket实例,用这个实例与客户端通讯, 这就需要自己开辟进程,进行处理了。语文学的不好,贴出代码来 java程序 package com.bh; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server{ /** * @param args */ int i=0; private static ServerSocket mServerSocker; private static Socket sc; // private static BufferedReader in; // private static PrintWriter out; public static void main(String[] args) throws IOException { mServerSocker=new ServerSocket(8888); while(true){ sc=mServerSocker.accept(); System.out.println( aaaaaaaa ); //Server s=new Server(); Thread r=new ReciveThreat(sc); r.start(); Thread s=new SendThread(sc); s.start(); System.out.println( kaishi ); //my.run(); //new Server().run(); } //out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(sc.getOutputStream())),true); } } send类 package com.bh; 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.Socket; public class SendThread extends Thread{ private Socket sc; int i=0; //private BufferedReader in; private PrintWriter out; public SendThread(Socket s) throws IOException { sc=s; //in=new BufferedReader(new InputStreamReader(sc.getInputStream())); out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(sc.getOutputStream())),true); //System.out.println( ok ); } @Override public void run() { // TODO Auto-generated method stub try { while(true){ Thread.sleep(3000); System.out.println( aa ); out.println(i++); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } recive类 package com.bh; 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.Socket; public class ReciveThreat extends Thread{ private Socket sc; private BufferedReader in; //private PrintWriter out; public ReciveThreat(Socket s) throws IOException { sc=s; in=new BufferedReader(new InputStreamReader(sc.getInputStream())); //out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(sc.getOutputStream())),true); } @Override public void run() { while(true){ try { String str; str = in.readLine(); if(str!=null){ System.out.println( read: +str); System.out.println( run...... ); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } Android程序 package com.bh.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Main extends Activity implements Runnable{ /** Called when the activity is first created. */ EditText et; String recive; Socket s; TextView t; PrintWriter out; BufferedReader in; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et=(EditText) findViewById(R.id.edittext); Button b=(Button) findViewById(R.id.send); t=(TextView) findViewById(R.id.showtext); try { s = new Socket( 10.0.2.2 ,8888); out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream())),true); in=new BufferedReader(new InputStreamReader(s.getInputStream())); } catch (UnknownHostException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } new Thread(this).start(); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String aa=et.getText().toString(); out.println(aa); //s.close(); Log.d( aaaaaaa , aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ); } }); } public Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.what) { case 1: t.setText(recive); break; default: break; } }; }; @Override public void run() { while(true){ try { //String str; recive = in.readLine(); Log.d( aaaaa ,recive); if(recive!=null){ //t.setText(recive); handler.sendEmptyMessage(1); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } 有错误 大家指出了 谢谢哈 1 楼 luyunhan 2012-02-18 不知道楼主调试过没有,我在Android3.0的xoom上运行的时候强制关闭了。问题应该出 现在客户端得39行上面。
本文档为【java Android socket 多线程 小结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:25KB
软件:Word
页数:0
分类:互联网
上传时间:2018-10-02
浏览量:2