Android与服务器通信之socket通信

最近接触的一个案例需要用到通讯方式,首先想到的是socket通讯,–代码比较简单;然后就去网上查代码,找了很久发现一个大牛写的很详细>>> 跳转

一:Android:接收以及发送消息

1,首先实例化socketsocket = new Socket(服务器IP, 服务器端口号); 两个参数,参1为String类型,参2为Int类型
  • 1
  • 1
2,接收服务器信息
BufferedReader in = new BufferedReader(   new InputStreamReader(socket.getInputStream()));   
String msg = in.readLine();  
“ok,其中msg就是我们在服务器上读到的数据”
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
3.向服务器发送信息
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write("111");//111为发送的内容bw.flush();//提交发送信息请求bw.close();//关闭
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

二:服务器端:接收与发送给android消息

ServerSocket ss=new ServerSocket(port);
while(true){
//服务器端一直在运行等待客户端发送socket,对于一个新的socket,服务器则建立一个新的socket.
Socket s=ss.accept();
1.读消息:与客户端完全相同
// 接受客户端信息  
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));                         
2.发消息:与客户端程序完全相同
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("111");//111为发送的内容
bw.flush();//提交发送信息请求
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三:网络权限,既然是涉及到通讯,必不可少的就是网络访问权限

<uses-permission android:name="android.permission.INTERNET"/>
  • 1
  • 1

四:关于PrintWriter与BufferedWriter的区别

涉及到的一个知识点 
1. PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串; 
2. PrintWriter的println方法自动添加换行,BufferedWriter需要显示调用newLine方法; 
3. PrintWriter的方法不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生 
4. PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush); 
5. PrintWriter的构造方法更广。

五:其它知识点 
贴一跳转>>>这个帖子是讲android模拟器当客户端,电脑当服务器使用的,经过测试没有问题。注意IP一定为android的固定通信ip–10.0.2.2. 
贴二跳转>>>也可以利用android客户端当服务器,pc机器当客户端通信,也可以通过多个模拟器之间进行通信,但需要窗口重定向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

easyexcel简单写入

官方文档 https://easyexcel.opensource.alibaba.com/ 1、导入依赖 目前最新版本3.1.1 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version> </dependency>2、定义映射…

HTML 中的特殊字符

空格符 <小于号 < >大于号 > &和好 &amp; &#xffe5;人民币 &yen; © 版权 © 注册商标 &reg; ℃ 摄氏度 &deg; 正负号 &plusmn; 称号 &times; 除号 &divide; 2次方 &sup2; 3次方…

getLocationOnScreen不起作用原因

要在窗口获得焦点以后再去获取控件在屏幕上的绝对坐标&#xff0c;在onCreate或者onResume函数里使用&#xff0c;均得不到实际坐标。 解决方法 <TextViewandroid:layout_width"wrap_content"android:layout_height"wrap_content"android:onClick"…

Android Splash闪屏页秒开 Activity白屏、Activity黑屏问题

本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 今天在处理项目中闪屏界面的时候&#xff0c;遇到程序第一次开启会出现白屏大约2秒左右&#xff0c;然后再执行闪屏&#xff0c;故找到该篇文章&#xff0c;问题解决&#xff1a; 本篇博客要剖析和解决的两个问题&…

前端学习(2707):重读vue电商网站27之通过axios请求拦截器添加 token

通过axios请求拦截器添加 token&#xff0c;保证拥有获取数据的权限。 原因是&#xff0c;后台那边除开登录的 api&#xff0c;其它都需要进行授权 。 因此&#xff0c;我们可以利用 axios 中interceptors属性&#xff0c;其中有一个成员 request&#xff0c;此时我们可以通过…

hutool学习-BeanUtil.copyProperties对象赋值

1、老的写法 for(int i 0;i <list.size();i) {HouseData data new HouseData();JSONObject one list.getJSONObject(i);data.setName(one.getStr("name"));data.setType(one.getStr("type"));data.setCode(one.getStr("code"));houseList…

mac osx 下 浏览器 开启 java

工作环境mac osx 浏览器 chrome:63.0.3239.132 (Official Build) (64-bit)firefox: 57.0.4 (64 位)safari:Version 11.0.1 (13604.3.5) 堡垒机的部分设置&#xff0c;需在单独的web后台&#xff0c;该后台依赖java&#xff0c;和之前 超微 Supermicro 的 web 管理类似&#xff…

Android 使用控件自定义背景实例

实例1 <?xml version"1.0" encoding"UTF-8"?> <!-- 底部圆角 白色背景 灰色边框 长方体 --> <layer-list xmlns:tools"http://schemas.android.com/tools"xmlns:android"http://schemas.android.com/apk/res/android&quo…

mac mongodb bson 导入

1、官网下载对应工具 https://www.mongodb.com/try/download/bi-connector 2、将文件解压&#xff0c;放置到bin目录中。 3、运行命令进行数据恢复 mongorestore -d db_name 文件夹目录 mongorestore -d yangdb /Users/caowei/Downloads/yang-admin-main/db/yang-admin4、…

网易新闻客户端链接

转自原文&#xff1a;http://blog.csdn.net/macwhirr123/article/details/46682161 最近在做一个新闻客户端&#xff0c;正好找到几个不错的链接&#xff0c;网易新闻的&#xff0c;如下 财经 http://c.m.163.com/nc/article/list/T1348648756099/0-20.html 时尚 http://c…

前端学习(2708):重读vue电商网站28之通过axios请求拦截器添加 token

通过axios请求拦截器添加 token&#xff0c;保证拥有获取数据的权限。 原因是&#xff0c;后台那边除开登录的 api&#xff0c;其它都需要进行授权 。 因此&#xff0c;我们可以利用 axios 中interceptors属性&#xff0c;其中有一个成员 request&#xff0c;此时我们可以通过…

ABAP表生成Java实体Bean

项目中需要将HR模块中的表数据同步到Java系统中&#xff0c;向外围系统提供分发与查询服务&#xff0c;涉及到的表有两百多张&#xff0c;字段好几千上万个&#xff0c;如果手工一张张这些ABAP表在Java系统数据库中创建一遍的话&#xff0c;工作量将非常大&#xff0c;而且容易…

java三大特性——封装,继承,多态

1、封装 使用封装有三大好处&#xff1a; 1、良好的封装能够减少耦合。 2、类内部的结构可以自由修改。 3、可以对成员进行更精确的控制。 4、隐藏信息&#xff0c;实现细节。 5、封装我们也能够对对象的出口做出很好的控制&#xff0c;访问入口做一些控制 如对实体类进行属性…

vite打包分析插件rollup-plugin-visualizer

1、安装插件 pnpm install rollup-plugin-visualizer2、在vite.confg.ts引入插件并使用 引入 import { visualizer } from rollup-plugin-visualizer;使用 const plugins [vue(), vueSetupExtend(), vueJsx(), visualizer()]3、打包后&#xff0c;会产生一个stats.html文件…

前端学习(2709):重读vue电商网站29之左侧菜单栏

关于这一块的话&#xff0c;由于后台数据已经写好&#xff0c;我们只需要通过双层 for 循环即可渲染我们的菜单栏&#xff0c;注意点&#xff1a; :index 只能绑定字符串&#xff0c;因此将后台请求过来的 id值与空字符串进行拼接达到此效果&#xff0c;解决了点击某个菜单栏导…

Android应用中去掉标题栏方法总结(Eclipse+Android Studio)

Eclipse 1.在程序代码中实现 需要注意的是: this.requestWindowFeature(Window.FEATURE_NO_TITLE); 这段代码一定要放在setContentView();方法前面&#xff0c;否则不会生效! 这个方法只会在引用过的布局才会生效&#xff0c;比如这个activity_main引用了&#xff0c;就不会…

IntelliJ IDEA配置PROFILES切换环境变量

一.修改POM文件 追加一下内容 <profiles><!-- dev 开发环境 --><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><profileActive>dev</profileAc…

oracle安装,未找到文件 F:\app\Administrator\product\11.2.0\dbhome_2\owb\external\oc4j_ap

安装11g&#xff0c;过程中提示 未找到文件 E:\app\xxj\product\11.2.0\dbhome_1\owb\external\oc4j_applications\applications\WFMLRSVCApp.ear 解决办法&#xff1a; 将win64_11gR2_database_2of2中的\win64_11gR2_database_2of2\database\stage\Components\*文件夹的内容拷…

前端学习(2711):重读vue电商网站31之左侧菜单栏图标设计

保持一个子菜单的展开 直接在侧边栏区域添加上述属性即可

潍职e校帮APP功能简介

2017年04月17日&#xff0c;团队第一款产品>>>e校帮已正式上线了。当前最新版本为V1.2.1&#xff0c;大家可以在e校帮官网进行下载&#xff0c;http://exiaobang.top &#xff0c;或者在搜狗手机助手/搜狗输入法/酷安/应用宝等进行下载。 e校帮简介&#xff1a; e校帮…