Android实现TCP发送,可发送多条数据

public class SocketUtility {
private final String SEPARATOR_FLAG = “ @ @ @”;
final String TAG="------------------------------------------------Socket----------------------------------------------";
private boolean isRun = true;
private DataInputStream dis;
byte buff[] = new byte[4096];
private String Str_get;
private int rcvLen;
private Socket mSocket = null;
private BufferedReader bufferedReader = null;
private Context mContext = null;
//定义输出流(发送)
private OutputStream mOutputStream = null;
//定义输入流(接收)
private InputStream mInputStream = null;
//地址
private String mAddress = “192.168.1.107”;
//端口
private int mPort = 6666;
private int msgid = 0;
//参数
private Thread mThread = null;
Thread mHeatThread = null;
private static SocketUtility instance = null;
// 状态
public static final int STATUS_UNINIT = 0;
public static final int STATUS_INIT = 1;
public static final int STATUS_DISCONNECT = 2;
public static final int STATUS_CONNECT = 3;
public static final int STATUS_RELEASE = 4;
public static final int RECV_BUF_MAX_LEN = 1024 * 1024; //1M
private static int mStatus = STATUS_UNINIT;
private long mHeatLastRecvTime = 0; //上次接受心跳时间戳
private long mHeatLastSendTime = 0; //上次发送心跳时间戳
private long mHeatLossHeatCnt = 0; //丢失心跳
private long MAX_LOSS_HEAT = 3;
private final long mHeatPerMS = 60 * 1000; //心跳间隔

    public void thread()
    {
        Thread_Socket_Connect thread = new Thread_Socket_Connect();
        thread.start();
    }

// private List mListeners = null;
// private List mSndMsgs = null;

// public SocketUtility() {
//
// }

// public synchronized String getMsgid() {
// return String.format("%d", msgid++);
// }

// public static SocketUtility getInstance() {
// if (instance == null) {
// instance = new SocketUtility();
// }
// return instance;
// }

// public void setAttribute(Context context) {
// mListeners = new ArrayList<>();
// mSndMsgs = new ArrayList<>();
// mContext = context;
// }

class Thread_Socket_Connect extends Thread{
    @Override
    public void run() {
        super.run();

// if (mSocket != null) {
// if (LogManager.SocketUtility_LOG)
// MyLoger.i(this, “start createSocket…” + mSocket);
// closeSocket();
// }

        // 1 连接
        try {

            mSocket = new Socket(mAddress, mPort);
        //    SocketAddress socAddress = new InetSocketAddress(mAddress, mPort);

// mAddress = AppCofing.getInstance().getValueByKey(AppCofing.CFG_SERVICE_IP_KEY);
// mPort = AppCofing.getInstance().getValueByKey(AppCofing.CFG_SERVICE_ALARM_PORT_KEY);
MyLoger.i(this, “与服务器建立连接” + mSocket);
Log.v(TAG, “创建socket连接”);
if (LogManager.SocketUtility_LOG)
MyLoger.i(this, “start createSocket…” + mAddress + “:” + mPort);
} catch (IOException e) {
e.printStackTrace();
}

// if (TextUtils.isEmpty(mAddress) || TextUtils.isEmpty(mPort) || (!CommonUtils.isNumeric(mPort))) {
MyLoger.e(this, “服务器配置参数…不正确 start createSocket…” + mAddress + “:” + mPort);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return;
}
// int port = Integer.parseInt(mPort);

// mSocket = SSlClient.CreateSSLCleint(mContext, mAddress.trim(), port);
// mSocket = new Socket(mAddress, mPort);

// if (mSocket != null) {
// mSocket.setSoTimeout(3000);
while (isRun){
try {
mSocket.setSoTimeout(300000);
String res=“123456”;
OutputStream mOutputStream = mSocket.getOutputStream();
mOutputStream.write(res.getBytes());
Log.v(TAG, "已向服务器发送数据: "+res);
// PrintStream printStream = new PrintStream(mOutputStream);
// printStream.println(mOutputStream);

//

           InputStream mInputStream = mSocket.getInputStream();
            dis = new DataInputStream(mInputStream);

// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(mInputStream));
// String Str_get = bufferedReader.readLine();
rcvLen = dis.read(buff);
Str_get = new String(buff,0,rcvLen,“utf-8”);

            MyLoger.i(this, "收到服务器的数据是:" + Str_get);
            Log.v(TAG, "Get Data from Server: " + Str_get);
  //          mSocket.connect(socAddress, 100000);
                if (Str_get.equals("QuitClient")){   //服务器要求客户端结束
                    isRun = false;
                    mOutputStream.close();
                    mInputStream.close();
                    mSocket.close();
                    Log.v(TAG, "关闭socket");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}}}

参考这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值