android socket 收不到数据,无法在android上使用socket编程接收多个数据

我是新的socket编程,基本上想通过socket编程将多个数据从服务器(带python的PC)发送到我的android应用程序。问题是:

1)服务器确认abt 10+连接并停止接收客户端请求。在

2)客户端服务器挂起,不打印单个数据。在

试图同步异步任务,但似乎表面上不起作用,它应该如何。在

如果有任何建议能让它发挥作用,我们将不胜感激。在

ANDROID客户端package com.example.clientserver;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.concurrent.Semaphore;

import android.os.AsyncTask;

import android.os.Bundle;

import android.app.Activity;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

public class MainActivity extends Activity {

TextView textResponse;

EditText editTextAddress, editTextPort;

Button buttonConnect, buttonClear;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

editTextAddress = (EditText) findViewById(R.id.address);

editTextPort = (EditText) findViewById(R.id.port);

buttonConnect = (Button) findViewById(R.id.connect);

buttonClear = (Button) findViewById(R.id.clear);

textResponse = (TextView) findViewById(R.id.response);

buttonConnect.setOnClickListener(buttonConnectOnClickListener);

buttonClear.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

textResponse.setText("");

}

});

}

OnClickListener buttonConnectOnClickListener = new OnClickListener() {

@Override

public void onClick(View arg0) {

/*

* MyClientTask myClientTask = new MyClientTask(

* editTextAddress.getText().toString(),

* Integer.parseInt(editTextPort.getText().toString()));

* myClientTask.execute();

*/

RealTimeTask realTimeTask = new RealTimeTask(editTextAddress

.getText().toString(), Integer.parseInt(editTextPort

.getText().toString()));

realTimeTask.start();

}

};

public class RealTimeTask {

String dstAddress;

int dstPort;

String response = "";

RealTimeTask(String addr, int port) {

dstAddress = addr;

dstPort = port;

}

public void start() {

int loop = 0;

Semaphore semaphore = new Semaphore(1);

while (true) {

try {

Thread.sleep((long) 0.1);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

semaphore.acquire();

} catch (InterruptedException e) {

System.out.println("got interrupted!");

}

MyClientTask myClientTask = new MyClientTask(dstAddress,

dstPort);

myClientTask.execute();

semaphore.release();

loop++;

}

}

}

public class MyClientTask extends AsyncTask {

String dstAddress;

int dstPort;

String response = "";

MyClientTask(String addr, int port) {

dstAddress = addr;

dstPort = port;

}

@Override

protected Void doInBackground(Void... arg0) {

Socket socket = null;

try {

socket = new Socket(dstAddress, dstPort);

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(

1024);

byte[] buffer = new byte[1024];

int bytesRead;

InputStream inputStream = socket.getInputStream();

/*

* notice: inputStream.read() will block if no data return

*/

while ((bytesRead = inputStream.read(buffer)) != -1) {

byteArrayOutputStream.write(buffer, 0, bytesRead);

response += byteArrayOutputStream.toString("UTF-8");

}

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

response = "UnknownHostException: " + e.toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

response = "IOException: " + e.toString();

} finally {

if (socket != null) {

try {

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

return null;

}

@Override

protected void onPostExecute(Void result) {

textResponse.setText(response);

super.onPostExecute(result);

}

}

}

PYTHON服务器

^{pr2}$