Socket传输(下)----客户端
来源:互联网 发布:wbinairbook mac os 编辑:程序博客网 时间:2024/06/04 20:20
上一篇写的是服务端的使用,这一篇要写客户端
客户端可以实现一下功能:
1.链接服务端
2.向服务端发送信息,并得到服务端的反馈
客户端界面:
1.链接服务端
这是一个耗时操作,所以要把它放在一个子线程中
class ClientSocketThread extends Thread { @Override public void run() { //如果是跑在同一个手机上就可以是随意的IP地址,如果是不同手机上的,上面要是同一WIFI下的IP地址 try { Socket socket = new Socket("192.168.1.104", 1234);//ip地址要是对方的地址 //连接成功后接收消息的方法(后面会讲到) connected(socket); } catch (IOException e) { e.printStackTrace(); } } }
客户端Socket在实例化中,IP地址要填写所要链接服务端的IP地址,不是自己的
在运行的时候要先启动服务端再启动客户端
2.接收服务端发送的消息
因为要不断地接收消息,是一个耗时操作,所以要到子线程中,这里有一个匿名类,是进行消息处理的
首先是匿名类的构造方法
//写数据和读取数据的线程 class ConnectThread extends Thread { Socket socket; InputStream in = null; OutputStream out = null; public ConnectThread(Socket socket) { this.socket = socket; try { in = socket.getInputStream(); out = socket.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } }
在run方法中实现对服务端数据的监听
@Override public void run() { byte[] buffer = new byte[1024]; int bytes = 0; //等待另一端发送的数据 while (true) { try { bytes = in.read(buffer); Log.d("TAG", "client_read:" + new String(buffer, 0, bytes)); Log.d("TAG", "----------------------------------"); } catch (IOException e) { e.printStackTrace(); } } }
向服务端发送数据,就是向服务端写入数据的方法
//向另一端写数据的操作 public void write(byte[] buffer) { try { out.write(buffer); Log.d("TAG", "client_write:" + new String(buffer)); } catch (IOException e) { e.printStackTrace(); } }
关闭socket链接,这时输入输出流的链接都会关闭
//关闭的方法 public void cancle() { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } }
这个处理数据的类就算是完成了,下面是在connected()方法中将线程启动
//数据连接发送信息线程的实例化 private void connected(Socket socket) { if (connectThread != null) { connectThread.cancle(); connectThread = null; } connectThread = new ConnectThread(socket); connectThread.start(); Log.d("TAG", "connect success"); }
最最后一步是按钮的点击事件
@Override public void onClick(View v) { switch (v.getId()) { //启动客户端 case R.id.start_btn: new ClientSocketThread().start(); break; //向服务端写数据 case R.id.write_btn: String data = "hello_server"; //数据传输类的对象 connectThread.write(data.getBytes()); break; } }
最后的最后就是源码
https://github.com/XuDaHaoRen/SocketClienDemo
0 0
- Socket传输(下)----客户端
- socket服务器、客户端传输
- Socket传输文件示例(下)
- android客户端和java服务端之间用socket来传输图片(示例代码)
- android客户端和java服务端之间用socket来传输图片(示例代码)
- java用socket客户端和服务器之间通信,传输文件经典例子(详细分析)
- Java Socket学习(二)——客户端服务端相互传输数据
- c# 下 socket 客户端 编程
- Linux下socket传输文件示例
- Socket异步服务器,可以监控客户端的状态,功能有,文字测试,服务端向客户端传输屏幕录像(UDP传输)、监控客户端屏幕(UDP传输),抖动用户窗体、发送文件给用户、扫描客户的C盘目录。
- Java Socket服务器端和客户端之间传输对象
- 23Socket实现UDP服务器端和客户端连接传输
- 服务端和Android客户端利用Socket传输JSON数据
- C++利用socket的客户端和服务器之间传输文件
- c++ 通过socket(网络套接字)传输图片(客户端)
- python使用tcp socket 传输文件-服务端,客户端
- Socket网络传输(C#)
- socket 传输文件(简单)
- 使用Mybatis自动生成工具
- javaoop集合框架——List接口的常用方法
- nyoj ACM:部分和问题(DFS 回溯 递归)
- 游戏编程中的人工智能技术:前言、目录、序言等
- CodeForces
- Socket传输(下)----客户端
- 利用drawerlayout和NavigationView实现侧滑栏
- BZOJ 2039: [2009国家集训队]employ人员雇佣
- MQCONN failed (Reason = 2277)
- Linux下Qt程序的打包发布
- [java 反射] Array介绍
- sdust 实验
- CentOS6.4下Docker应用环境的部署配置
- 南阳oj715_Adjacent Bit Counts