Socket 连接前置机和手机APP的转发工具

这是一个用于转发Socket连接的工具,适用于前置机作为服务端,手机APP作为客户端的场景。通过创建双向通信通道,该工具允许手机通过USB与前置机进行Socket通信,实现数据流的交互。
摘要由CSDN通过智能技术生成

以下为转发工具代码:

   前提:前置机为服务端,app为客户端.以下代码可以直接用,如果前置机和app都是客户端,则需要改转发工具总的客户端端为服务端,即可.

 该转发工具的应用场景:

        1.当手机需要通过USB连接前置机的,并采用socket通信的时候使用

应用原理:

   就是建立双向通道, 转发工具其实就是两个服务端或者一个客户端一个服务端拼接起来,建立双向通信通道,供连接的两端进行数据流交互使用.

package com.pemt.sockettools;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    ServerSocket serverSocket1 =null;
    Socket       socket1       =null;
    int inputPort=1234;
    int outPutPort=3131;//和掌机连接的端口
    InetAddress  address1       =null;
    InetAddress  address2      =null;
     private static final String TAG = "MainActivity";
    SharedPreferences sp ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor edit = sp.edit();
        edit.putString("exception","");
        edit.commit();
        init();
    }

    private void init() {
        initView();
        sp = PreferenceManager.getDefaultSharedPreferences(this);
        Log.e(TAG, "init:-------------------------------------- " );
        run();
    }

    private void run() {
        new Thread(new Runnable() {
            Socket socket2=null;
            @Override
            public void run() {
                try {
                  socket2 =new Socket("127.0.0.1",1234);//和前置机
                    Log.e(TAG, "init:----------------------try---------------- ");
              // ServerSocket serverSocket2 = new ServerSocket(1234);//和前置机

                    serverSocket1 =new ServerSocket(outPutPort, 2);//和统一版APP 默认同时连接两个客户端.
                    Log.e(TAG, "init: 服务端.......");
                    serverSocket1.setReuseAddress(true); //设置 ServerSocket 的选项
                   System.out.println("服务器即将启动,等待客户端的链接=====>");
                    Log.e(TAG, "服务器即将启动,等待客户端的链接=====>" );
                    //记录客户端的数量
                    int count = 0 ;

                   // while (true){
                        Log.e(TAG, "run: ...........");
                        socket1 = serverSocket1.accept();//阻塞,等待客户端请求
                       // socket2 = serverSocket2.accept();//阻塞,等待客户端请求

                        Log.e(TAG, "等待客户端请求" );
                        //创建一个新的线程
                     MyThread serverThread = new MyThread(socket1, socket2,Main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值