Andoird中能够使用java中封装的Socket通信机制。
服务端:
public class SimpleServer { public static void main(String[] args) throws IOException { // 创建一个ServerSocket,用于监听客户端Socket的连接请求 ServerSocket ss = new ServerSocket(30000); // 采用循环不断接受来自客户端的请求 while (true) { // 每当接受到客户端Socket的请求,服务器端也对应产生一个Socket Socket s = ss.accept(); OutputStream os = s.getOutputStream(); os.write("Hello , this is Server !\n".getBytes("utf-8")); // 关闭输出流,关闭Socket os.close(); s.close(); } } }
Android客户端的简单实现 :
public class SimpleClient extends Activity { EditText show; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); show = (EditText) findViewById(R.id.show); try { Socket socket = new Socket("192.168.1.120", 30000); BufferedReader br = new BufferedReader(new InputStreamReader( socket.getInputStream())); String line = br.readLine(); show.setText("来自服务器的数据:" + line); br.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
==========================
加入线程后:
服务端:
public class MyServer { public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(30000); while (true) { Socket s = ss.accept(); // 每当客户端连接后启动一条ServerThread线程为该客户端服务 new Thread(new ServerThread(s)).start(); } } } public class ServerThread implements Runnable { // 定义当前线程所处理的Socket Socket s = null; // 该线程所处理的Socket所对应的输入流 BufferedReader br = null; public ServerThread(Socket s) throws IOException { this.s = s; // 初始化该Socket对应的输入流 br = new BufferedReader(new InputStreamReader(s.getInputStream(), "utf-8")); // ② } public void run() { try { String content = null; while ((content = br.readLine()) != null) { OutputStream os = s.getOutputStream(); os.write((content + "\n").getBytes("utf-8")); } } catch (IOException e) { e.printStackTrace(); } } }
客户端代码:
public class MultiThreadClient extends Activity { EditText input, show;// 定义界面上的两个文本框 Button send;// 定义界面上的一个按钮 OutputStream os; Handler handler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); input = (EditText) findViewById(R.id.input); send = (Button) findViewById(R.id.send); show = (EditText) findViewById(R.id.show); Socket s; handler = new Handler() { @Override public void handleMessage(Message msg) { // 如果消息来自于子线程 if (msg.what == 0x123) { // 将读取的内容追加显示在文本框中 show.append("\n" + msg.obj.toString()); } } }; try { s = new Socket("192.168.1.120", 30000); // 客户端启动ClientThread线程不断读取来自服务器的数据 new Thread(new ClientThread(s, handler)).start(); // ① os = s.getOutputStream(); } catch (Exception e) { e.printStackTrace(); } send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { os.write((input.getText().toString() + "\r\n") .getBytes("utf-8")); // 清空input文本框 input.setText(""); } catch (Exception e) { e.printStackTrace(); } } }); } }
客户端处理线程
public class ClientThread implements Runnable { private Socket s; private Handler handler; BufferedReader br = null; public ClientThread(Socket s, Handler handler) throws IOException { this.s = s; this.handler = handler; br = new BufferedReader(new InputStreamReader(s.getInputStream())); } public void run() { try { String content = null; // 不断读取Socket输入流中的内容。 while ((content = br.readLine()) != null) { // 每当读到来自服务器的数据之后,发送消息通知程序界面显示该数据 Message msg = new Message(); msg.what = 0x123; msg.obj = content; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
在安卓(Android)平台...综上所述,"安卓Android源码——基于socket通讯的文件续传!"的项目可能包含一个实现上述逻辑的示例应用,通过分析和学习,开发者可以掌握如何在Android应用中实现实用且高效的文件续传功能。
这份"安卓Android源码——(Socket协议).rar"压缩包文件可能包含了关于如何在Android平台上实现Socket通信的详细教程或者示例代码。以下是关于Android中Socket协议及相关知识点的详细解释: 1. **Socket基础知识**:...
Socket是基于TCP/IP协议族的通信接口,可以视为在网络中两台计算机之间建立连接的桥梁。一个Socket由IP地址和端口号唯一标识,这样数据就能在不同的设备间准确传输。在Android应用中,我们可以使用Java的Socket类和...
本资源"Android源码——Socket编程源码(与PC通讯).zip"提供了相关的源代码示例,帮助开发者理解如何在Android应用中实现基于Socket的通讯机制。本文将详细讲解Android Socket编程及其与PC通信的关键知识点。 1. *...
在本项目中,"基于Android的网络游戏开发——易扑克网络对战游戏.zip"是一个包含源码的压缩包,主要用于教学和学习如何在Android平台上开发网络游戏,特别是扑克类的网络对战游戏。以下将详细解析该项目可能涉及的...
在本项目中,“安卓Android源码——基于手机的远程视频监控系统”是一个使用Android平台开发的应用,它允许用户通过智能手机实现远程视频监控。这个系统的关键在于整合了图像处理、网络通信以及Android应用开发技术...
本项目"安卓Android源码——android在wifi下手机与电脑的socket通信.zip"提供了具体的示例,帮助开发者理解如何在WiFi环境下实现手机与电脑的Socket连接。 首先,让我们深入了解一下Socket通信的基本原理。Socket是...
本文将深入探讨Android中基于Socket和HTTP的网络编程,包括它们的概念、实现方式以及如何构建一个完整的客户端代码。 1. Socket(套接字)网络编程: Socket是网络通信的基础,它提供了进程间通信的能力,使得运行...
这个"安卓Android源码——安卓Android源码安卓与PC的Socket通信项目C70版+Java版.rar"包含两个版本的源代码,一个是基于C#语言的,另一个是基于Java语言的,这为开发者提供了选择不同编程语言实现相同功能的灵活性。...
Socket提供了基于TCP/IP协议的端对端连接,确保数据的可靠传输。在Android中,由于权限管理,我们需要在`AndroidManifest.xml`中声明INTERNET权限。 2. **建立Socket连接**: 在Android应用中,通常在Service或...
在本项目中,“安卓Andriod源码——基于手机的远程视频监控系统”是一个实现手机远程视频监控的应用程序。这个项目的核心是利用Android平台的功能,将手机转变为一个可远程访问的摄像头,允许用户通过网络查看实时...
3. **Socket编程**:在Android和PC之间建立通信通道的关键是Socket。Android端需要创建一个Socket,连接到PC的特定端口,然后通过输入输出流进行数据交换。PC端也需要监听特定端口,接受Android设备的连接请求,并...
Socket是基于TCP/IP协议的一种通信机制,它允许两个网络应用程序之间进行双向数据传输。在安卓应用中,Socket通常用于构建网络连接,发送和接收字符串或二进制数据。在这个例子中,我们可能会看到一个Socket作为...
Android聊天室项目是基于Socket网络编程的一个典型应用案例。通过本项目的开发,开发者可以深入了解如何利用Android设备与服务器端进行通信,实现多人在线聊天的功能。本资料详细介绍了如何在Android平台上使用...
智能家居客户端实现——Android Studio版是将现代科技与日常生活相结合,为用户提供便捷、智能的生活环境的项目。基于Android Studio开发的这个客户端,旨在让用户通过智能手机就能远程操控家中的各种智能设备,如...
本资源“安卓Android源码——精典源码之在wifi下手机与电脑的socket通信.zip”提供了实现这一功能的示例代码,旨在帮助开发者理解和实践Android设备通过WiFi利用Socket进行通信的技术。 首先,我们要理解Socket的...
这个"安卓Android源码——客户端连接服务器并交互实例.zip"压缩包提供了实现这一功能的示例代码,帮助开发者理解和掌握如何在Android应用中实现网络通信。下面我们将详细探讨这一主题。 1. **TCP/HTTP通信基础**: ...