线程和socke
来源:互联网 发布:莉莉柯林斯长相知乎 编辑:程序博客网 时间:2024/05/18 22:14
注意:网络通讯要开线程,收发各开一个
线程:
http://blog.csdn.net/leege100/article/details/37878575
更新UI的线程:(异步)
http://www.cnblogs.com/zhaoyanjun/archive/2016/05/11/5483221.html
http://blog.csdn.net/qwe19860/article/details/48519237
线程锁:
http://blog.csdn.net/a992036795/article/details/51372272
http://blog.csdn.net/dawanganban/article/details/29383783
UDP:
http://www.cnblogs.com/pbq-dream/p/5366300.html
http://blog.csdn.net/tianxuhong/article/details/45337103
TCP:
tcp除非有心跳包,否则很难检测是否连接。所以客户端要可控地在服务端启动的时候连接。发送数据就无所谓了。
实时视频播放:(简单的)
http://blog.csdn.net/shenpibaipao/article/details/70176038
接受:http://www.cnblogs.com/lijiongquan/p/4729445.html
发送:http://blog.csdn.net/liuhanhan512/article/details/8489077
TCP动态更新图片:
http://www.cnblogs.com/lijiongquan/p/4729445.html
http://www.cnblogs.com/android-blogs/p/5737596.html
http://www.oschina.net/code/snippet_212511_37899?winzoom=1
问题:
http://blog.csdn.net/maxwell_nc/article/details/49081105
:可以尝试 BitmapFactory.decodeStream(inputstream)转换为byte再转换为FILE再转换为bitmap
或者inputstream来先转换再为file再为bitmap
例程:UDP
1. UDP类定义,其继承于线程可做线程启动对象。线程为启动和接受,静态方法为发送
public class UDPsocket implements Runnable{ private static final int msglength = 1024; private static DatagramSocket datagramSocket = null; private static byte[] message = new byte[msglength]; @Override public void run() { try { datagramSocket = new DatagramSocket(Password.UDPPort); DatagramPacket Packet = new DatagramPacket(message, message.length); while (true){ datagramSocket.receive(Packet); // Password.TCPIP = Packet.getAddress().getHostAddress().toString(); Log.d("UDP Demo", Packet.getAddress() .getHostAddress().toString() + ":" + new String(Packet.getData())); Log.d("UDP Demo", "tcp IP:" + Password.TCPIP); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void UdpSend(String message){ if(null == datagramSocket){ return; } InetAddress local = null; try { // 换成服务器端IP local = InetAddress.getByName(Password.UDPIP); } catch (UnknownHostException e) { e.printStackTrace(); } int msg_length = message.length(); byte[] messageByte = message.getBytes(); DatagramPacket p = new DatagramPacket(messageByte, msg_length, local, Password.UDPPort); try { datagramSocket.send(p); } catch (IOException e) { e.printStackTrace(); } } }2. Activity启动UDP的run方法
UDPsocket udPsocket = new UDPsocket(); new Thread(udPsocket).start();3. 某个按钮事件中启动线程调用UDP类的发送方法
case R.id.button1: new Thread(new Runnable() { @Override public void run() { UDPsocket.UdpSend(Password.UDPstr); } }).start(); break;
例子:TCP客户端
1. TCP类,类似上面的UDP构造
public class TCPControl implements Runnable { private static Socket mSocket = null; private static SocketAddress socAddress = null; private static BufferedReader in = null; private static PrintWriter out = null; private PrintWriter output = null; @Override public void run() { try { mSocket = new Socket(); socAddress = new InetSocketAddress(Password.TCPIP, Password.TCPControlPort); mSocket.connect(socAddress, 3000);//超时3秒 } catch (IOException e) { e.printStackTrace(); } } public static void TCPControlsend(String msg) { Log.d("Tcp Demo", "TCP msg:" + msg + "," + Password.TCPIP); try { //加自动换行 // BufferedWriter out = new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream())); // out.write(msg+"\n");//防止粘包 // out.flush();//不加这个flush会怎样? //不加自动换行 byte[] buf = msg.getBytes(); OutputStream os = mSocket.getOutputStream(); os.write(buf); os.flush(); } catch (IOException e) { e.printStackTrace(); } }}2. 某个按钮事件,第一下按下启动线程连接TCP,之后按下都是启动另一线程发送数据
case R.id.button2: switch (Password.TCPflag) { case 0: tcpControl = new TCPControl(); new Thread(tcpControl).start(); Password.TCPflag = 1; TCPbutton.setText("send"); break; case 1: new Thread(new Runnable() { @Override public void run() { TCPControl.TCPControlsend(Password.TCPstr1); } }).start(); Password.TCPflag = 1; TCPbutton.setText("close"); break; } break;
- 线程和socke
- Boost asio 同步和异步socke处理的流程
- socke 多线程
- Socke研究
- Socke通信
- 网络通信原理和socke通信原理/OSI七层模型
- sockets socke.inc
- python 编写server socke
- socke.io.emit 方法
- java socke学习
- linux socke UDP
- 基本TCP socke编程
- 1、初识socke
- j2me 基于socke t通信
- Linux 下 Socke t编程
- 用ss5实现socke代理
- Python 的socke编程示例
- android socke实时视频传输
- C
- countdownlatch无限等待
- C#中对表进行操作、转换--间断更新
- 开源ETL 工具 Kettle使用
- poj题目分类
- 线程和socke
- 开始PHP的学习!
- ArrayList和LinkedList的简单实现
- Objective
- Scala之类型参数化:Type Parameterization
- 闭包
- 网页版2048实战--简介及构建页面
- Linux yum安装包的更新列表
- python实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)