TCP READ ,Send Problem :(

C

C3lt1c84

Neues Mitglied
0
Hi @ all
Ihr seit meine letzte Hoffnung...
Ich versuche seit 3 Tagen eine Read und Send Lösung zu coden doch scheiter ich leider daran...

Also eine Socket Verbindung aufzubauen ist ja gar nicht so das Problem auch das senden Darüber auch nicht nur wenn ich gleichzeitig auch empfangen möchte um die Daten dann an die Gui Elemente dann zu übergeben...gibt es Probleme könnte mir jemand weiter helfen das ich in einer Main Aktivity eine Socket Verbindung beliebig schliessen und öffnen kann und Daten gleichzeitig senden und empfangen kann und das ich die die empfangen wurden an die gui elemente weiterreichen könne wäre total dankbar :)

Hier ist mein code den ich bisher geschrieben hab der mir aber denke ich nicht weiter helfen wird.... :(

Code:
package com.example.tcpclient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import android.util.Log;

public class NetClient {
	public static final int BUFFER_SIZE = 2048;
	private Socket socket = null;
	private PrintWriter out = null;
	private BufferedReader in = null;

	private String host = null;
	private String macAddress = null;
	private int port = 4000;
	private boolean connect = true;

	public NetClient(String host, int port, String macAddress) {
		this.host = host;
		this.port = port;
		this.macAddress = macAddress;

	}

	private boolean connectWithServer() {
		try {
			if (socket == null) {
				socket = new Socket(this.host, this.port);
				out = new PrintWriter(socket.getOutputStream());
				in = new BufferedReader(new InputStreamReader(
						socket.getInputStream()));
				if (socket.isConnected())
					return true;
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return false;
	}

	public boolean disConnectWithServer() {
		if (socket != null) {
			if (socket.isConnected()) {
				try {
					in.close();
					out.close();
					socket.close();
					return true;
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

		}
		return false;
	}

	public String receiveDataFromServer() {
		if (socket.isConnected()) {
			try {
				String message = "";
				int charsRead = 0;
				char[] buffer = new char[BUFFER_SIZE];

				charsRead = in.read(buffer);
				message += new String(buffer).substring(0, charsRead);

				return message;
			} catch (IOException e) {
				return "Error receiving response:  " + e.getMessage();
			}
		}
		return "";
	}

	public void sendDataWithString(String data) {
		if (socket.isConnected()) {
			if (data != null) {
				connectWithServer();
				out.write(data);
				out.flush();
				Log.d("MARCEL_CONNECTION", "SENDDATA:" + "[" + data + "]");
			}
		}
	}

	public void startConnection(String host, int port){
		this.host = host;
		this.port = port;
		Thread connectionThread = new Thread(new ConnectThread());
		connectionThread.start();
			
	}

	// ---------------------------------------------------------------
	private class ConnectThread implements Runnable {

		@Override
		public void run() {

			Log.d("MARCEL_CONNECTION", "connecting...");

			if (connectWithServer()) {
				Log.d("MARCEL_CONNECTION", "connected...");
		//		Thread dataListenerThread = new Thread(new DataListenerThread());
		//		dataListenerThread.start();
				connect = true;
			} else {
				disConnectWithServer();
				Log.d("MARCEL_CONNECTION", "connection fail...");
				connect = false;
			}

		}

	}

	// ---------------------------------------------------------------
	public class DataListenerThread implements Runnable {

		@Override
		public void run() {
			try{
			Log.d("MARCEL_CONNECTION", "DataListener started...");
			while (connect) {
				if (socket.isConnected()) {
					String data = "";
					data = receiveDataFromServer();
					receiveData(data);
					Log.d("MARCEL_CONNECTION", "REVDATA:" + "[" + data + "]");
				}else{
					connect = false;
				}
			}
			}catch(Exception e){
				
			}
			
			Log.d("MARCEL_CONNECTION", "DataListener end...");
			disConnectWithServer();

		}

	}
	
	public void receiveData(String data){
		
	}

	public Socket getSocket() {
		return socket;
	}

	public void setSocket(Socket socket) {
		this.socket = socket;
	}

	public boolean isConnect() {
		return connect;
	}

	public void setConnect(boolean connect) {
		this.connect = connect;
	}
	
	
}
 
Vielleicht fehlt irgendwo ein Punkt oder Komma?
 

Ähnliche Themen

M
  • maksimilian
Antworten
4
Aufrufe
1.211
jogimuc
J
M
  • maksimilian
Antworten
4
Aufrufe
991
maksimilian
M
Jansenwilson
Antworten
1
Aufrufe
762
swa00
swa00
Zurück
Oben Unten