Ich habe einen Python client der sich mit einem Android Server verbindet.
Der client sendet aber nicht nur die nachricht sondern auch NULL, 6 pro nachricht.
Mit einem Java Client wird nur die Nachricht gesendet.
Client :
Code: Alles auswählen
import socket
import time
ip = '192.168.43.1'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 1511))
try:
for x in range(2):
nachricht = "test"+"\n"
s.send(nachricht)
#antwort = s.recv(1024)
print("sende")
finally:
s.close()
Code: Alles auswählen
public CommunicationThread(Socket clientSocket) {
this.clientSocket = clientSocket;
try {
Log.v(TAG, "CommunicationThread, instanziert");
this.input = new BufferedReader(new InputStreamReader(
this.clientSocket.getInputStream()));
this.output = new PrintWriter(new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())), true);
address = clientSocket.getInetAddress();
if(!known_addresses.contains(clientSocket.getInetAddress()))
known_addresses.add(clientSocket.getInetAddress());
} catch (IOException e) {
Log.e(TAG, "ClientSocket inputStreamReader error");
e.printStackTrace();
}
}
// eine zeile vom imput einlesen, wenn der thread nicht unterbraichen
// ist
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Log.v(TAG, "CommunicationThread Running");
String response = "#,nix,nix,nix,nix,#";
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(clientSocket.getOutputStream())),
true);
String read = input.readLine();
if (read != null){
list.setNachticht(read, address.getHostAddress());
out.println(response);
out.flush();
Log.d(TAG, "Antwort=\""+response+"\"");
updateConversationHandler.post(new updateUIThread(read, address));
}
else{
Log.e(TAG, "null erhalten");
list.setNullcount();
counter++;
if (counter > 5){
Log.e(TAG, "Restarte conntection");
list.conntectionreset();
counter = 0;
this.clientSocket.close();
this.clientSocket = serverSocket.accept();
}
}
} catch (IOException e) {
Log.e(TAG, "updateConversationHandler error");
e.printStackTrace();
}
}
}
}
// texst in den viewtun
class updateUIThread implements Runnable {
private String msg = "";
private InetAddress address;
// private TextView text = (TextView) findViewById(R.id.text2);
public updateUIThread(String str, InetAddress address) {
this.msg = str;
this.address = address;
}
@Override
public void run() {
Log.d(TAG, "Daten erhalten: \""+msg+"\", würden an dieser Stelle zur verarbeitung weitergegeben werden, IP="+address.getHostAddress());
if (msg != null){
nullcounter = 0;
}
else{
nullcounter++;
if (nullcounter >100){
}
}
}
}
public interface listener{
public void setNachticht(String nachrichat, String IP);
public void setNullcount();
public void conntectionreset();
}
}
Code: Alles auswählen
package com.example.connectiontest;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity implements WifiListener.listener {
private TextView nachricht;
private TextView ip;
private TextView nullcounter;
private TextView connresets;
private TextView nachrichtcounter;
private int stringcounter =0;
private int ncounter = 0;
private int resetcounter =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.nachricht = (TextView) this.findViewById(R.id.laststring);
this.ip = (TextView) this.findViewById(R.id.ip);
this.nullcounter = (TextView) this.findViewById(R.id.nullcounter);
this.connresets = (TextView) this.findViewById(R.id.connresets);
this.nachrichtcounter = (TextView) this.findViewById(R.id.stringcounter);
new WifiListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void setNachticht(final String nachrichat, final String IP){
stringcounter ++;
runOnUiThread(new Runnable() {
@Override
public void run() {
nachrichtcounter.setText(" "+stringcounter+"");
nachricht.setText(" "+nachrichat);
ip.setText(" "+IP);
}
});
}
public void setNullcount(){
ncounter++;
runOnUiThread(new Runnable() {
@Override
public void run() {
nullcounter.setText(" "+ncounter+"");
}
});
}
public void conntectionreset(){
resetcounter++;
runOnUiThread(new Runnable() {
@Override
public void run() {
connresets.setText(" "+resetcounter+"");;
}
});
}
}