使用ServerSocket创建服务器端:

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建一个ServerSo查看特,用于监听客户端Socket的连接请求
ServerSocket ss=new ServerSocket(3000);
while(true){
//每当接收到客户端Socket的请求,服务器端也对应产生一个Socket,没接收到请求就等待。。
Socket s=ss.accept();
OutputStream os=s.getOutputStream();//服务器端产生的Socket获取输出流
os.write("您好,您收到了来自服务器的祝福!\n".getBytes());
os.close();
s.close();
}
}

客户端使用Socket通信:
测试环境是PC端服务器,手机当客户端,PC和手机要连接同一个局域网,PC和手机在同一网段

package com.example.simpleclient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException; import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView; public class MainActivity extends Activity {
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView) findViewById(R.id.text);
new Thread(){ @Override
public void run() {
// TODO Auto-generated method stub try {
//建立连接到远程服务器的的Socket,Ip是服务器端PC的IP,测试环境是PC端服务器,手机当客户端,PC和手机要连接同一个局域网,PC和手机在同一网段
Socket socket = new Socket("192.168.88",3000);
//将Socket对应的输入流包装秤BufferedReader
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line=br.readLine();
text.setText("来自服务的数据:"+line);
br.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }.start();
}
}

补充:用ADB shell来检查网络状态

方法:Windows平台

1. cmd cd到adb.exe安装路径,通常是xxx/sdk/platform-tools

2. 输入adb shell

3. netstat

4. 查看指定端口占用 netstat -aon|findstr "8630"

查看PID对应进程 tasklist|findstr "2014"

以上列表中state状态说明
LISTEN 侦听来自远方的TCP端口的连接请求[4]
SYN-SENT 在发送连接请求后等待匹配的连接请求[4]
SYN-RECEIVED 在收到和发送一个连接请求后等待对方对连接请求的确认[4]
ESTABLISHED 代表一个打开的连接[4]
FIN-WAIT-1 等待远程TCP连接中断请求,或先前的连接中断请求的确认[4]
FIN-WAIT-2 从远程TCP等待连接中断请求[4]
CLOSE-WAIT 等待从本地用户发来的连接中断请求[4]
CLOSING 等待远程TCP对连接中断的确认[4]
LAST-ACK 等待原来的发向远程TCP的连接中断请求的确认[4]
TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认[4]
CLOSED 没有任何连接状态[4]

详情参考:android通过执行netstat及cat /proc/net/tcp查看正在运行应用的本地端口号pid和uid以及对方的IP和端口号

ADB shell命令:ADB Shell学习  

Android之socket多线程(二)的更多相关文章

  1. Android之socket多线程

    一.添加权限 <uses-permission android:name="android.permission.INTERNET" /> 二.输入输出流 客户端和服务 ...

  2. Android 基于Socket的聊天应用(二)

    很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...

  3. Android Learning:多线程与异步消息处理机制

    在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客 ...

  4. 基于android的Socket通信

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户 ...

  5. Android四个多线程分析:MessageQueue实现

    Android四个多线程分析:MessageQueue的实现 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 在前面两篇文章<Android多线 ...

  6. Android ADB命令教程二——ADB命令详解

    Android ADB命令教程二——ADB命令详解 转载▼ 原文链接:http://www.tbk.ren/article/249.html       我们使用 adb -h 来看看,adb命令里面 ...

  7. Android中的多线程【转】

    感谢大佬:https://www.cnblogs.com/zoe-mine/p/7954605.html 感谢大佬:https://blog.csdn.net/u014555121/article/d ...

  8. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  9. Android APP压力测试(二)之Monkey信息自动收集脚本

      Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...

随机推荐

  1. 05基于python玩转人工智能最火框架之TensorFlow基础知识

    从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...

  2. Promise实例的then方法

  3. 996.icu 事件后

    996.icu 事件后 雇主 更加关注效率 减少成本 分工再细化 精简人员 雇员 法律意识加强 个人权利争取 效率低者下岗 技能提高 效率提高 影响 商业社会更有效率 人力市场竞争更加激烈 国内竞争力 ...

  4. Mysql5.6 for Centos6.5源码编译安装

    ## 说明 不同服务器需要改变 server_id ,同一台机器上需要改变 port 1. 关闭防火墙[root@mysql ~]# service iptables status --查看防火墙状态 ...

  5. openstack常见问题

    openstack通过kolla-ansible添加一个计算节点,并部署后,发现控制节点上无法发现新加的计算节点, 在控制节点的  nova_scheduler.nova_api容器上执行发现计算节点 ...

  6. spark机器学习

    多层感知器(MLP) from __future__ import print_function from pyspark.ml.classification import MultilayerPer ...

  7. ELK入门以及常见指令

    ES的资源: https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.htmlhttps://w ...

  8. bzoj 2351 [BeiJing2011]Matrix——二维哈希

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2351 就是先把每行单独从左到右扫着乘一个 b1 哈希起来,然后再按列从上往下乘一个 b2 哈 ...

  9. HanLP代码与词典分离方案与流程

    之前在spark环境中一直用的是portable版本,词条数量不是很够,且有心想把jieba,swcs词典加进来, 其他像ik,ansi-seg等分词词典由于没有词性并没有加进来. 本次修改主要是采用 ...

  10. java小程序(课堂作业03)

    使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 思路:因为静态初始化块只运行一次,是一个很好的记录次数的方法,定义一 ...