public class SocketUtils { private Socket socket; private static final SocketUtils ourInstance = new SocketUtils(); static SocketUtils getInstance() { return ourInstance; private SocketUtils() { * 向指定ip地址发送指令 * @param ipAddress * @param port * @param msg * @param listener public void sendMsg(String ipAddress, int port, String msg, OnSocketResult listener) { MyAsyncTask asyncTask = new MyAsyncTask(listener); asyncTask.execute(ipAddress, String.valueOf(port), msg); * 自定义asyncTask public class MyAsyncTask extends AsyncTask { private final OnSocketResult listener; public MyAsyncTask(OnSocketResult listener) { super(); this.listener = listener; @Override protected String doInBackground(String... strings) { String address = strings[0]; int port = Integer.parseInt(strings[1]); String msg = strings[2]; String data = ""; try { // Log.i("tcp", "启动客户端"); if (socket == null) { socket = new Socket(address, port); // Log.i("tcp", "客户端连接成功"); if (socket != null && socket.isConnected() && msg != null) { socket.getOutputStream().write(msg.getBytes()); socket.getOutputStream().flush(); PrintWriter pw = new PrintWriter(socket.getOutputStream()); InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) != -1) { data = new String(buffer, 0, len); Log.i("tcp", "收到服务器的数据:" + data); TCPClient.closeSocket(socket); // Log.i("tcp", "客户端断开连接"); pw.close(); } catch (Exception EE) { EE.printStackTrace(); // Log.i("tcp", "客户端无法连接服务器"); } finally { try { if (socket != null) { socket.close(); } catch (IOException e) { e.printStackTrace(); socket = null; return data; @Override protected void onPostExecute(String result) { super.onPostExecute(result); listener.onSuccess(result); * 获取socket结果的接口 public interface OnSocketResult { void onSuccess(String result); /** * 作者:guoyzh * 时间:2019/5/15 11:02 * 功能:处理socket的工具类 */public class SocketUtils { private Socket socket; private static final SocketUtils ourInstance = new SocketUtils(); static So... android :name=" android .permission.INTERNET" /> Android 主线程 不允许做耗时操作, Socket 需要放在子线程 ; 1、创建 Socket 连接 ,拿到输入输出流:
使用 的框架是 Android Async 项目地址:https://github.com/koush/ Android Async/tree/master/ Android Async/src/com/koushikdutta/async 参考的文章是 http://programminglife.io/ android -http-server-with- android async/ https://git
import android .content.Context; import android .net.ConnectivityManager; import android .net.NetworkInfo; import android .net.wifi.WifiInfo; import android .net.wifi.Wifi...
先上效果图布局文件<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: android ="http://schemas. android .com/apk/res/ android " xmlns:tools="http://schemas. android .com/tools" android :layout_widt
App开发常用的一些网络通信技术,主要包括如何 使用 多线程完成异步操作、如何进行HTTP接口调用与图片获取、如何实现文件上传和下载操作、如何运用 Socket 通信技术。 一、 多 线 程 介绍多线程技术在App开发 的具体运用,首先说明如何利用Message配合Handler完成主线程与分线程之间的简单通信;然后阐述进度对话框的用法,以及如何自定义实现文本进度条与文本进度圈;接着讲述异步任务...
Android Socket 连接 失败时,可能有多种原因导致。以下是一些常见的解决方法: 1. 检查网络 连接 :首先,确保你的设备已 连接 到可用的网络。你可以 使用 ConnectivityManager来检查网络 连接 状态,如下所示: ```java ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { // 网络可用 } else { // 网络不可用 2. 确保服务器地址和 口正确:确保你正在尝试 连接 的服务器地址和 口是正确的。 3. 检查防火墙设置:如果你的设备或服务器上启用了防火墙,确保防火墙允许与指定 口的 连接 。 4. 检查权限:在 Android Manifest.xml文件 ,确保你已经声明了必要的权限。例如,如果你 使用 了Internet权限,需要在文件 添加以下行: ```xml <uses-permission android :name=" android .permission.INTERNET" /> 5. 使用 异步任务:如果你在主线程 执行 socket 连接 操作,可能会导致主线程阻塞。建议将 socket 连接 操作放在异步任务 执行。可以 使用 AsyncTask 或者线程池来实现异步操作。 ```java private class ConnectTask extends AsyncTask <Void, Void, Socket > { @Override protected Socket doInBackground(Void... params) { Socket socket = null; try { socket = new Socket (); socket .connect(new Inet Socket Address("服务器IP", 服务器 口), 5000); // 设置超时时间为5秒 } catch (IOException e) { e.printStackTrace(); return socket ; @Override protected void onPostExecute( Socket socket ) { if ( socket != null) { // 连接 成功 } else { // 连接 失败 这些是一些常见的解决方法,希望对你有所帮助!如果问题仍然存在,请提供更多的细节和错误信息,以便我能够更好地帮助你。
syntax error, expect RPAREN, actual LITERAL_INT pos 885, line 46, column 29, token LITERAL_INT 36121