App第一次运行可以连接,第二次就不行

r00_a2lBUR 2017-09-05 03:01:29
我用C#做了一个TCP/IP服务器,用Android Studio做了一个手机端,手机端第一次运行的时候,按连接服务器按钮可以连接上服务器,但退出后,第二次就连不上,重装APP后又可以连上,这个是什么原因造成的?
附手机端进行TCP/IP连接的代码:

package com.example.administrator.handset_trade_zm;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
* Created by Administrator on 2017-09-05.
*/

public class TcpClientConnector {

private static TcpClientConnector mTcpClientConnector;
private Socket mClient;
private ConnectLinstener mListener;
private Thread mConnectThread;

public interface ConnectLinstener {
void onReceiveData(String data);
}

public void setOnConnectLinstener(ConnectLinstener linstener) {
this.mListener = linstener;
}

public static TcpClientConnector getInstance() {
if (mTcpClientConnector == null)
mTcpClientConnector = new TcpClientConnector();
return mTcpClientConnector;
}

Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 100:
if (mListener != null) {
mListener.onReceiveData(msg.getData().getString("data"));
}
break;
}
}
};

public void creatConnect(final String mSerIP, final int mSerPort) {
if (mConnectThread == null) {
mConnectThread = new Thread(new Runnable() {
@Override
public void run() {
try {
connect(mSerIP, mSerPort);
} catch (IOException e) {
e.printStackTrace();
}
}
});
mConnectThread.start();
}
}

/**
* 与服务端进行连接
*
* @throws IOException
*/
private void connect(String mSerIP, int mSerPort) throws IOException {
if (mClient == null) {
mClient = new Socket(mSerIP, mSerPort);
}
InputStream inputStream = mClient.getInputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = inputStream.read(buffer)) != -1) {
String data = new String(buffer, 0, len);
Message message = new Message();
message.what = 100;
Bundle bundle = new Bundle();
bundle.putString("data", data);
message.setData(bundle);
mHandler.sendMessage(message);
}
}

/**
* 发送数据
*
* @param data 需要发送的内容
*/
public void send(String data) throws IOException {
OutputStream outputStream = mClient.getOutputStream();
outputStream.write(data.getBytes());
}

/**
* 断开连接
*
* @throws IOException
*/
public void disconnect() throws IOException {
if (mClient != null) {
mClient.close();
mClient = null;
}
}
}



连接按钮的代码:


public void e_button_stoplinkserver_clicked(View view)
{
try
{
String sSend = "STOP";
m_connector.send(sSend);
m_connector.disconnect();
}catch (Exception ex)
{
mTextView_Warning.setText("断开连接失败。");
}
}
...全文
494 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_乾坤_ 2017-10-14
  • 打赏
  • 举报
回复
可能是有些资源没有释放。
r00_a2lBUR 2017-09-05
  • 打赏
  • 举报
回复
连接时的代码:

    public void e_button_linkserver_clicked(View view)
    {
        mTextView_Op.setText("正在连接服务器...");
        mTextView_Notice.setText("");
        mTextView_Warning.setText("");
        m_connector = TcpClientConnector.getInstance();
        m_connector.creatConnect( m_sIP,m_iPort);
        m_connector.setOnConnectLinstener(new TcpClientConnector.ConnectLinstener() {
            @Override
            public void onReceiveData(String data) {
                //do somethings.
                mTextView_Notice.setText(data);
            }
        });
    }

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧