zoukankan      html  css  js  c++  java
  • android wifi热点 socket通信

    1.首先建立wifi热点服务器  wifi客户端连接

    2.开启一个子线程循环监听某个端口,进行数据流输入输出

    /* 服务器 接收数据 */
    class Receiver extends Thread {
    public String receiverContent;
    public boolean flag = true;
    public ServerSocket serverSocket = null;

    public void run() {
    try {
    // 创建ServerSocket
    serverSocket = new ServerSocket(3358);
    while (flag) {
    // 接受客户端请求
    Socket client = serverSocket.accept();
    System.out.println("accept");
    try {
    // 接收客户端消息
    BufferedReader in = new BufferedReader(
    new InputStreamReader(client.getInputStream()));
    receiverContent = in.readLine();
    System.out.println("read:" + receiverContent);
    handler.sendEmptyMessage(0);
    // 向客戶端发送消息
    PrintWriter out = new PrintWriter(
    new BufferedWriter(new OutputStreamWriter(
    client.getOutputStream())), true);
    out.println("server message");
    // 关闭流
    out.close();
    in.close();
    } catch (Exception e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
    } finally {
    // 关闭
    client.close();
    System.out.println("close");
    }
    }
    } catch (Exception e) {
    System.out.println(e.getMessage());
    }
    }

    public void close() {
    flag = false;
    if (serverSocket != null) {
    try {
    serverSocket.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }

    /* 客户端发送数据 */
    class Sender extends Thread {
    String serverIp;
    String message;

    Sender(String serverAddress, String message) {
    super();
    serverIp = serverAddress;
    this.message = message;
    }

    public void run() {
    Socket sock = null;
    PrintWriter out;
    try {
    // 声明sock,其中参数为服务端的IP地址与自定义端口
    sock = new Socket(serverIp, 3358);
    Log.w("WifiConnection", "I am try to writer" + sock);
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    try {
    // 向服务器端发送消息
    out = new PrintWriter(new BufferedWriter(
    new OutputStreamWriter(sock.getOutputStream())), true);
    out.println(message);

    // 接收来自服务器端的消息
    BufferedReader br = new BufferedReader(new InputStreamReader(
    sock.getInputStream()));
    String msg = br.readLine();
    Message m = handler.obtainMessage();
    m.what = 1;
    m.obj = msg;
    handler.sendMessage(m);
    // 关闭流
    out.close();
    out.flush();
    br.close();
    // 关闭Socket
    sock.close();
    } catch (Exception e) {
    LogUtil.e("发送错误:[Sender]run()" + e.getMessage());
    }

    }
    }

  • 相关阅读:
    Repeater OnItemCommand 失效
    继承类时的 this 和 base
    想当然造成的的错误
    排序算法二叉树
    href 一个正则表达式的解析 ? 号解析
    给父窗口添加新的代码
    ValidationSummary 控件
    交叉表 学习
    定向思维 C# datediff
    cookie 问题
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/4589946.html
Copyright © 2011-2022 走看看