android socket通信
时间:2019-02-16
本文章向大家介绍android socket通信,主要包括android socket通信使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
复习下,
server端:
package com.btzh;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author wyb
* @date 2019/02/16
*/
public class Server {
public static void main(String ards[]) {
System.out.println("--------这是服务器!");
// 接收数据
getData();
}
private static void getData() {
try {
// 创建serverSocket监听端口8087
ServerSocket serverSocket = new ServerSocket(8087);
System.out.println("-------服务监听开始了");
// 设置允许接受数据
Socket scSocket = serverSocket.accept();
// 接收客户端发送的数据
InputStream inputStream = scSocket.getInputStream();
InputStreamReader streamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bReader = new BufferedReader(streamReader);
String sDateString = null;
StringBuffer sBuffer = new StringBuffer();
while ((sDateString = bReader.readLine()) != null) {
sBuffer.append(sDateString);
}
System.out.println("---服务器:" + sBuffer.toString());
scSocket.shutdownInput();
// 向客户端发送数据
OutputStream oStream = scSocket.getOutputStream();
oStream.write(("我是服务器,客户端刚刚给我发送的数据就是:" + sBuffer.toString()).getBytes());
oStream.flush();
scSocket.shutdownOutput();
oStream.close();
bReader.close();
streamReader.close();
inputStream.close();
scSocket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
client端:
package com.btzh.client;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
//输入数据
private EditText inputedit;
//展示服务器返回数据
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputedit = findViewById(R.id.inputedit);
textView = findViewById(R.id.textview);
}
//点击按钮向服务器发送数据
public void sendMes(View view) {
sendData();
}
private void sendData() {
if (TextUtils.isEmpty(inputedit.getText().toString())) {
Toast.makeText(this, "请输入内容!", Toast.LENGTH_SHORT).show();
return;
}
new Thread() {
@Override
public void run() {
super.run();
try {
//本机地址+与服务器端的端口一致
Socket socket = new Socket("192.168.0.147", 8087);
OutputStream outputStream = socket.getOutputStream();
//发送数据
outputStream.write(inputedit.getText().toString().getBytes());
outputStream.flush();
socket.shutdownOutput();
InputStream inputStream = socket.getInputStream();
//接收读取服务器端的数据使用“GBK”防止乱码
InputStreamReader reader = new InputStreamReader(inputStream,"GBK");
BufferedReader bf = new BufferedReader(reader);
String s = null;
final StringBuffer stringBuffer = new StringBuffer();
while ((s = bf.readLine()) != null) {
stringBuffer.append(s);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(stringBuffer.toString());
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}
客户端使用时要注意连接相同局域网,开启网络权限,设置相同的端口,以及连接正确的ip地址;
- 监听器第一篇【基本概念、Servlet各个监听器】
- 监听器第二篇【统计网站人数、自定义session扫描器、踢人小案例】
- 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
- 一条执行时间两天半的sql语句简化(r4笔记第62天)
- 05-01总结方法,数组(一维)
- 02 Java类的加载机制
- 权限管理系统
- 03 JVM的垃圾回收机制
- Tomcat就是这么简单
- Servlet第三篇【request和response介绍、response的常见应用】
- 通过java来格式化sql语句(r4笔记第61天)
- Servlet第四篇【request对象常用方法、应用】
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 台阶很高,青蛙跳不跳?
- 从零开始认识堆排序
- Redis SDS 深入一点,看到更多!
- Centos7下Oracle 11g r2 本地/远程 用exp/imp命令快速导入导出数据 实践笔记
- js常用函数大全107个
- xtraReprot 动态绑定数据 数据列动态
- 线上问题分析之java dump文件生成
- python基础知识
- AtCoder Beginner Contest 177 A ~ E
- 2017 年ICPC 中国大陆区域赛铜牌题解
- 搜索(DFS BFS)专题练习
- AtCoder Beginner Contest 171
- AtCoder Beginner Contest 173 A ~ F(已经补完)
- AtCoder Beginner Contest 174 A ~ E
- AtCoder Beginner Contest 170