Android socket编程

简介:



      Socket通常也称做”套接字“,用于描述IP地址和端口,它就是网络通信过程中端点的抽象表示。Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。

  • SocketServer类,服务器实现:
public class SocketServer {            ServerSocket sever;            public SocketServer(int port){          try{              sever = new ServerSocket(port);          }catch(IOException e){              e.printStackTrace();          }      }            public void beginListen(){          while(true){              try{                  final Socket socket = sever.accept();                                    new Thread(new Runnable(){                      public void run(){                          BufferedReader in;                          try{                              in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));                              PrintWriter out = new PrintWriter(socket.getOutputStream());                              while (!socket.isClosed()){                                  String str;                                  str = in.readLine();                                  out.println("Hello!world!! " + str);                                  out.flush();                                  if (str == null || str.equals("end"))                                      break;                                  System.out.println(str);                              }                              socket.close();                          }catch(IOException e){                              e.printStackTrace();                          }                      }                  }).start();              }catch(IOException e){                  e.printStackTrace();              }          }      }  }
public class TestSocketServer {            public static void main(String[] argvs){          SocketServer server = new SocketServer(12345);          server.beginListen();      }  }

客户端实现:
public class SocketClientDemo extends Activity implements Runnable {     private TextView tv_msg = null;     private EditText ed_msg = null;     private Button btn_send = null;     private static final String HOST = "192.168.1.223";     private static final int PORT = 12345;     private Socket socket = null;     private BufferedReader in = null;     private PrintWriter out = null;     private String content = "";      /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);          tv_msg = (TextView) findViewById(R.id.TextView);         ed_msg = (EditText) findViewById(R.id.EditText01);         btn_send = (Button) findViewById(R.id.Button01);          try {             socket = new Socket(HOST, PORT);             in = new BufferedReader(new InputStreamReader(socket.getInputStream()));             out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(                     socket.getOutputStream())), true);         } catch (IOException ex) {             ex.printStackTrace();             ShowDialog("login exception" + ex.getMessage());         }         btn_send.setOnClickListener(new Button.OnClickListener() {              @Override             public void onClick(View v) {                 // TODO Auto-generated method stub                 String msg = ed_msg.getText().toString();                 if (socket.isConnected()) {                     if (!socket.isOutputShutdown()) {                         out.println(msg);                     }                 }             }         });         new Thread(SocketDemo.this).start();     }      public void run() {         try {             while (true) {                 if (socket.isConnected()) {                     if (!socket.isInputShutdown()) {                         if ((content = in.readLine()) != null) {                             content += "\n";                             Log.d("socket","socket:"+content);                         } else {                          }                     }                 }             }         } catch (Exception e) {             e.printStackTrace();         }     }  } 

注意在AndroidManifest.xml中加入对网络的访问权限

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




     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230758,如需转载请自行联系原作者



相关文章
|
9月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
279 3
|
9月前
|
存储 消息中间件 人工智能
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
263 11
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
|
9月前
|
存储 消息中间件 人工智能
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
589 10
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
|
9月前
|
存储 消息中间件 人工智能
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
551 4
|
9月前
|
XML 存储 Java
【06】AI辅助编程完整的安卓二次商业实战-背景布局变更增加背景-二开发现页面跳转逻辑-替换剩余图标-优雅草卓伊凡
【06】AI辅助编程完整的安卓二次商业实战-背景布局变更增加背景-二开发现页面跳转逻辑-替换剩余图标-优雅草卓伊凡
225 3
【06】AI辅助编程完整的安卓二次商业实战-背景布局变更增加背景-二开发现页面跳转逻辑-替换剩余图标-优雅草卓伊凡
|
API Android开发 iOS开发
深入探索Android与iOS的多线程编程差异
在移动应用开发领域,多线程编程是提高应用性能和响应性的关键。本文将对比分析Android和iOS两大平台在多线程处理上的不同实现机制,探讨它们各自的优势与局限性,并通过实例展示如何在这两个平台上进行有效的多线程编程。通过深入了解这些差异,开发者可以更好地选择适合自己项目需求的技术和策略,从而优化应用的性能和用户体验。
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
366 4
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
234 3
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
322 2

热门文章

最新文章