·使用Socket进行简单服务器通信

简单服务器端:

public class ServerThread implements Runnable{

Socket s=null;

BufferedReader br=null;

public ServerThread(Socket s) throws UnsupportedEncodingException, IOException {

this.s=s;

br=new BufferedReader(new InputStreamReader(s.getInputStream(), "utf-8"));

}

@Override

public void run() {

try{

String content=null;

while((content=readFromClient())!=null){

for(Iteratorit=Myserver.socketList.iterator();it.hasNext();){

Socket s=it.next();

try{

OutputStream os=s.getOutputStream();

os.write((content+"\n").getBytes("utf-8"));

}catch(SocketException e){

e.printStackTrace();

it.remove();

System.out.println(Myserver.socketList);

}

}

}

}catch(IOException e){

e.printStackTrace();

}

}

private String readFromClient(){

try{

return br.readLine();

}catch(IOException e){

e.printStackTrace();

Myserver.socketList.remove(s);

}

return null;

}

}

public class Myserver {

public static ArrayListsocketList=new ArrayList();

public static void main(String[] args) throws IOException {

ServerSocket ss=new ServerSocket(31510);

while(true){

Socket s=ss.accept();

socketList.add(s);

new Thread(new ServerThread(s)).start();

}

}

}

android应用端:

public class ClientThread implements Runnable{

private Socket s;

//发送,接受UI线程信息的Handler对象

private Handler handler;

public Handler revHandler;

BufferedReader br=null;

OutputStream os=null;

//构造函数

public ClientThread(Handler handler){

this.handler=handler;

}

@Override

public void run() {

try{

s=new Socket("222.26.207.88",31510);

//输入流将Socket读入BufferedReader

br=new BufferedReader(new InputStreamReader(s.getInputStream()));

os=s.getOutputStream();

new Thread(){

public void run() {

String content=null;

try{

while((content=br.readLine())!=null){

Message msg=new Message();

msg.what=0x123;

//将BufferedREader中的数据读入content后加入message

msg.obj=content;

//通过handler发送消息至消息队列

handler.sendMessage(msg);

}

}

catch(IOException e){

e.printStackTrace();

}

}

}.start();

//初始化Looper

Looper.prepare();

revHandler=new Handler(){

@Override

public void handleMessage(Message msg) {

//接收到UI线程中用户输入的数据

if(msg.what==0x345){

try{

//将用户在文本框的内容写入网络

os.write((msg.obj.toString()+"\r\n").getBytes("utf-8"));

}

catch(Exception e){

e.printStackTrace();

}

}

}

};

//启动Looper

Looper.loop();

}catch(SocketException e){

System.out.println("超时");

}catch(Exception e){

e.printStackTrace();

}

}

}

public class MainActivity extends Activity {

EditText input;

TextView show;

Button send;

Handler handler;

//与服务器通信的子线程

ClientThread clientThread;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

input=(EditText)findViewById(R.id.input);

show=(TextView)findViewById(R.id.show);

send=(Button)findViewById(R.id.send);

//将子线程中的内容显示在文本框

handler=new Handler(){

@Override

public void handleMessage(Message msg) {

if(msg.what==0x123){

show.append("\n"+msg.obj.toString());

}

super.handleMessage(msg);

}

};

clientThread=new ClientThread(handler);

//读取来自服务器的数据

new Thread(clientThread).start();

send.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

try{

Message msg=new Message();

msg.what=0x345;

msg.obj=input.getText().toString();

clientThread.revHandler.sendMessage(msg);

input.setText("");

}

catch(Exception e){

e.printStackTrace();

}

}

});

}

}

android socket 代理服务器,Android 使用Socket进行服务器通信相关推荐

  1. c语言实现ftp网络应用程序,使用C语言socket实现windows pc与ftp服务器通信---socket实现ftp客户端...

    code // Client.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include #include #include #pra ...

  2. Android与服务器通信之socket通信

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

  3. Socket实现Android客户端与服务器的通信

    前言:题目要求故写一下总结. 1.什么是Socket? 网络用语叫套接字原理是基于tcp/ip 协议的一种通信手段,目前题目中要求无非就是当客户端数据异常时推送给服务器报警信息 往常接下来都是先看效果 ...

  4. Android Socket编程android端服务器和客户端的实现

     Android Socket编程android端服务器和客户端的实现       其实和java实现的差不多,或本质是用java实现的,但由于android有自身的独特性,所以还是有一些要注意的点: ...

  5. Android网络编程系列 一 Socket抽象层

    在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象 ...

  6. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  7. 基于Android的聊天软件,Socket即时通信,实现用户在线聊天

    基于Android的聊天软件,Socket即时通信,单聊,聊天室,可自行扩展功能,完善细节. [实例功能] 1.运行程序,登录界面, 注册账号功能 2.进入主界面,有通讯录, 个人信息. 3.点击好友 ...

  8. android 分包粘包_Android Socket 发送与接收数据问题处理: 发送后的数据接收到总是粘包...

    先说明一下粘包的概念: 发送时是两个单独的包.两次发送,但接收时两个包连在一起被一次接收到. 在以前 WinCE 下 Socket 编程,确实也要处理粘包的问题,没想到在 Android 下也遇到了. ...

  9. Android学之客户端服务端Socket简单通信

    服务器端Socket直接在服务器Java控制台上运行,只要Java环境配置没有错误就行. 服务器端: AndroidService类,开启一个Socket服务,指定端口为30000 public cl ...

最新文章

  1. 自定义异常类: 运行期间跟编译期间的区别
  2. oracle设置超时时间
  3. 【转】Cvmat与IplImage的相互转换
  4. matlab 与数据库操作
  5. oracle imp 报12154错误解决办法
  6. 作为一个码农,必须知道的 Web 协议有哪些?
  7. 为什么说 Web 开发永远不会退出历史舞台?
  8. 数据结构(十七)数组和矩阵
  9. 160603、使用pd4ml.jar和ss_css2.jar转pdf的工具类
  10. mysqldb python.zip_python MySQLdb
  11. OpenCV绘制透明底的图片,简单易懂讲解alpha通道怎么用
  12. 使用lucene的多字段排序--回复网友BUFFON
  13. LTspice基础教程-010.波形查看器的使用
  14. 《JAVASE系列》抽象类与接口
  15. 【前端系列教程之HTML5】06_HTML5新标签
  16. 汽车电子-嵌入式软件测试
  17. Ubuntu 13.04 小米2S连接Eclipse真机调试
  18. Pktgen-DPDK使用说明
  19. 测试用例的设计方法_Study Notes
  20. 小数据大用场:银行大数据挖掘的五个切入点

热门文章

  1. java基础教程知识点,[Java教程]js基础知识点总结
  2. C语言-获取当前时间-格式化输出(完整代码)
  3. 2022年2月国产数据库排行榜: OceanBase“三连增”重夺榜眼,GaussDB实现本月最大涨幅引期待...
  4. DTC精彩回顾—黄东旭《TiDB数据驱动的企业智能化转型新方向》丨PPT视频
  5. 不会SQL注入,连漫画都看不懂了
  6. 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下!
  7. 从 Elasticsearch 来看分布式系统架构设计
  8. 文本检测算法新思路:基于区域重组的文本检测
  9. 解读clickhouse存算分离在华为云实践
  10. 为了减少代码复杂度,我将if-else升级为面向状态编程