String Array versenden

precoc

Mitglied
hey,

ich habe ein kleines Programm geschrieben das einen einzeiligen String per Socket an eine andere IP schicken kann. Das funktioniert auch. Ich möchte nun allerdings ein String ARRAY über diese Socket Verbindung schicken können. Kann mir jemand erklären wie ich das in meine Klassen einbauen kann?

Vielen Dank schon mal im vorraus!

Hier sind Nun die beiden Klassen (sendHost und receiveHost) und die beiden aufrufenden Klassen (sender und receiver).

Aus der Sender Klasse wird eine Socket Verbidung zum Host aufgebaut, der über die Receiver Klasse funktioniert am Port als Listener funktioniert bis eine Verbindung zustande gekommen ist, über diese Verbindung wird dann der einzeilige String (sendContent()) versendet und vom Receiver "ausgelesen".

Entschuldigt meine n00bsche Schreibweise!

receiverHost Klasse
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;


public class receiveHost {

	private int MSG = 1; 
	private int ERR = 1;
	
	private int receivePort = 0; 
	
	private ServerSocket server=null; 
	
	private Socket contentPaket = null; 
	
	private String content = null; 
	
	public void sendHostConfig(int MSG_set, int ERR_set){
		this.MSG = MSG_set;
		this.ERR = ERR_set;
	}
	
	public void startReceivePort(int connectPort){
		this.receivePort = connectPort;
		try {
			if(this.MSG == 1) System.out.println("Open Receive port...");
			this.server = new ServerSocket(connectPort);
			
		} catch (UnknownHostException e) {
			if(this.ERR == 1) System.err.println("Unknown Error...");
			if(this.ERR == 1)  e.printStackTrace();
            
        } catch (IOException e) {
        	if(this.ERR == 1) System.err.println("Receive Port konnte nicht öffnen..");
        	//if(ERR == 1) e.printStackTrace();
            
        }
	}
	
	public void closeReceivePort(){
		if (this.server != null){
            try {
            	this.server.close();
                if(this.ERR == 1)System.out.println("Close Receive Port...");          
            } catch (IOException e) {
            	if(this.ERR == 1)System.err.println("Port nicht zu schliessen...");
            	if(this.ERR == 1)e.printStackTrace();           	
            }
		}else{
			if(this.ERR == 1)System.err.println("Kein Port wurde geöffnet...");
		}

	}
	
	public boolean listenPortOnce(){
	while (true) {
            try {
            	 this.contentPaket = this.server.accept();
            	 readContent();
            	 return true;
            } catch (IOException e) {
            	if(this.ERR == 1)System.err.println("IOEx1...");
            	//if(ERR == 1)e.printStackTrace();
            	return false;
            }
		}
	}
	
	public String readContent(){
		try {
			BufferedReader rein = new BufferedReader(new InputStreamReader(contentPaket.getInputStream()));
			return this.content=rein.readLine();
			
		}catch (IOException e) {
        	if(ERR == 1)System.err.println("IOEx2...");
        	if(ERR == 1)e.printStackTrace();
        	return null;
        }
	}
	
	public String getContent(){
		return this.content;
	}

}

sendHost Klasse
Java:
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;


public class sendHost {
	private int MSG = 1; 
	private int ERR = 1; 
	
	private Socket socket = null;
	
	private String receiveIP = null; 
	
	private int receivePort = 0;
	
	public void sendHostConfig(int MSG_set, int ERR_set){
		this.MSG = MSG_set;
		this.ERR = ERR_set;
		//if(MSG == 1) System.out.println("Config wurde geändert...");
	}
		
	public void startSendSocket(String connectIP, int connectPort){
		this.receiveIP = connectIP;
		this.receivePort = connectPort;
		
		try {
			if(this.MSG == 1) System.out.println("Open Socket...");
			if(this.MSG == 1) System.out.println("Try Connect Receive Port...");
			this.socket = new Socket(connectIP, connectPort);
		} catch (UnknownHostException e) {
			if(this.ERR == 1) System.err.println("Unknown Host...");
			closeSendSocket();
			//if(ERR == 1)  e.printStackTrace();
        } catch (IOException e) {
        	if(this.ERR == 1) System.err.println("Receive Host hat keine Socket offen..");
        	closeSendSocket();
        	//if(ERR == 1) e.printStackTrace();
        }
	}
	
	public void closeSendSocket(){
		if (this.socket != null){
            try {
            	this.socket.close();
                if(this.ERR == 1)System.out.println("Close Socket...");
            } catch (IOException e) {
            	if(this.ERR == 1)System.err.println("Socket nicht zu schliessen...");
            	if(this.ERR == 1)e.printStackTrace();
            }
		}else{
			if(this.ERR == 1)System.err.println("Kein Socket wurde benutzt...");
		}

	}
	
	public void sendContent(String content){
		 try {
			OutputStream goOut = this.socket.getOutputStream();
            PrintStream outStream = new PrintStream(goOut, true);
            outStream.println(content);
            if(this.MSG == 1) System.out.println("Gesendeter Content: " + content);
		 }catch (UnknownHostException e) {
			//FEHLER
			if(this.ERR == 1) System.err.println("Unknown Host...");
			if(this.ERR == 1)  e.printStackTrace();
        } catch (IOException e) {
        	if(this.ERR == 1) System.err.println("Conent konnte nicht gesendet werden..");
        }
	}
	
}

Und hier die beiden aufrufenden Klassen

sender Klasse
Java:
public class Sender {
	/*
	 * Dies ist nur ein Beispiel zum Senden eines Strings
	 */
	public static void main(String[] args) {
		//Neuer Send Host wird erstellt
		sendHost sHOST = new sendHost();	
		
		//Send Host wird eingestellt
		sHOST.sendHostConfig(0,0);
		
		//Send Host Socket wird geöffnet
		sHOST.startSendSocket("localhost", 1237);
		
		//Sende Content
		sHOST.sendContent("Dies ist ein Test Content1");
		
		//Send Host Socket wird geschlossen
		sHOST.closeSendSocket();
		
	}
	
}

Receiver Klasse
Java:
public class Receiver {
	/*
	 * Dies ist nur ein Beispiel zum Erhalten eines Strings
	 */
	public static void main(String[] args) {
		//Neuer Send Host wird erstellt
		receiveHost rHOST = new receiveHost();	
		
		//Send Host wird eingestellt
		rHOST.sendHostConfig(1,1);
		
		//Send Host Socket wird geöffnet
		rHOST.startReceivePort(1237);
		
		//Listener Start
		rHOST.listenPortOnce();
		
		//Ausgabe des Content
		System.out.println("Das hat der Receive Host bekommen: " + rHOST.getContent());
		
		//Send Host Socket wird geschlossen
		rHOST.closeReceivePort();
		
	}
}
 

BRoll

Bekanntes Mitglied
Wärs nicht einfacher den String Array in einen String umzuwandeln?
Dh. du schreibst die ganzen Strings aus dem Array hintereinander in einen
String rein, jeweils mit einem Trennzeichen.
Und danach kannst du ja beim anderen nach dem Trennzeichen
den String wieder zerlegen in ein Array.:)
 

precoc

Mitglied
ja das währe natürlich möglich .. hatte nur gedacht das es vielleicht irgendwie geht das man direkt nen ganzen Array irgendwie überträgt.. :( . vielleicht hat ja jemand anders ne Idee ^^ aber danke schonmal!
 
T

ThisIsJaavaaa

Gast
Warum nich jeden String senden?

Java:
for(final String content: meinStringArray)
{
    outStream.println(content);
}

und wieder lesen:
Java:
String line;
while((line = rein.readLine()) != null)
{
    // // Array geht schlecht, weil es hier keine Länge gibt
}
 

precoc

Mitglied
auch wenn das jetzt nicht direkt zum oben genannten thema passt, aber gibt es eine möglichkeit die verbundenen Hosts anzeigen zu lassen vom Receiver ? ^^
 

anti-held

Bekanntes Mitglied
Du verwendest in deinem Programm einen Printstream.
Wenn du einen ObjectOutputStream verwenden würdest, könntest du auch serialisierte Objekte übertragen!
Wird halt dann beim empfangen auch als Object behandelt und muss wieder in ein Sting[] gecastet werden.
Für das casten würde ich den instanceof test empfehlen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
B HEX String zu einem Byte Array ? *verzweiflung* :( Netzwerkprogrammierung 16
O Ip-String in byte[]-Array umwandeln? Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
T server empfängt nur 1 Buchstaben vom String Netzwerkprogrammierung 1
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
S Socket String InputStream in hex umwandeln Netzwerkprogrammierung 1
T Socket Gleiche String ungleich? Netzwerkprogrammierung 8
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
F String in Datenbank speichern Netzwerkprogrammierung 1
I RMI String Netzwerkprogrammierung 2
T Socket String zu Socket Netzwerkprogrammierung 26
7 String an Server Netzwerkprogrammierung 2
lumo String[] wird zu null bei Serialisierung Netzwerkprogrammierung 8
S WebService, 4-stelliger String (Jahr) als Calendar Netzwerkprogrammierung 5
M String an PHP Script aus Java übergeben Netzwerkprogrammierung 12
M Messenger - String oder Objekte Netzwerkprogrammierung 4
T Socket Nullterminierten String lesen Netzwerkprogrammierung 4
J Datei übertragen ja String + datei übertragen nein Netzwerkprogrammierung 5
N Socket Stream in String Netzwerkprogrammierung 4
J Browser-String angeben Netzwerkprogrammierung 5
S String[] über Socket senden Netzwerkprogrammierung 3
F Stream wird als Char übertragen. Char -> in String umwand Netzwerkprogrammierung 5
G String in InetAddres umwandeln klappt nicht Netzwerkprogrammierung 5
A String per ByteBuffer empfangen? Netzwerkprogrammierung 6
ModellbahnerTT Problem feste String ins Netzwerk zu geben Netzwerkprogrammierung 5
G UTF-8 in STring umwandeln oder umgedreht Netzwerkprogrammierung 12
F String in eine URL umwandeln Netzwerkprogrammierung 7
P string over net Netzwerkprogrammierung 4
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
K String zurück liefern ! Netzwerkprogrammierung 4
S SSLSocketFactory.createSocket(String hostname, int port),wo? Netzwerkprogrammierung 5
C gesendeten String einlesen Netzwerkprogrammierung 3
G String to Socket ? Netzwerkprogrammierung 3
A StringCorruptedException: invalid String header Netzwerkprogrammierung 2
OnDemand Json Objekt leeres Array beim lesen Netzwerkprogrammierung 9
x46 Byte-Array per for-Schleife schicken Netzwerkprogrammierung 1
W Socket Byte Array senden Netzwerkprogrammierung 2
M Byte Array kommt nicht an Netzwerkprogrammierung 0
A Server Antwort enthält JSON Objekt/Array Netzwerkprogrammierung 8
B Socket Byte-array Komprimieren Netzwerkprogrammierung 3
T Outputstream Byte-Array senden Netzwerkprogrammierung 2
U ein ganzes Array effizient übermitteln Netzwerkprogrammierung 6
J Array oder Object über Sockets Netzwerkprogrammierung 8
O Über Socket Array versenden Netzwerkprogrammierung 5
A array übers netzwerk (anfänger) Netzwerkprogrammierung 8
S Socket-Array vs. MulticastSocket Netzwerkprogrammierung 2
P Array per Socketverbindung versenden Netzwerkprogrammierung 2
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
J Prblem, wenn im verschickten Objekt ein Array ist Netzwerkprogrammierung 4
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
T E-Mail versenden. Netzwerkprogrammierung 8
L Versenden von "Bildschirm" Netzwerkprogrammierung 2
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
L Email versenden mit Java funktioniert nicht, Fehlermeldungen: MessagingException & SocketException Netzwerkprogrammierung 10
B Viele verschiedene E-Mails an unterschiedliche Empfänger schnell versenden? Netzwerkprogrammierung 8
S Email via Googlemail versenden Netzwerkprogrammierung 17
M Mail über Exchange versenden Netzwerkprogrammierung 13
P Dateiennamen versenden Netzwerkprogrammierung 4
P Mit Java Javascript-Anfrage versenden Netzwerkprogrammierung 4
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
C An WebDAV einen "MKCOL" Befehl versenden Netzwerkprogrammierung 4
X Versenden von Objekten braucht zu lange Netzwerkprogrammierung 5
N Technologie zum versenden von Objects Netzwerkprogrammierung 5
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
R Versenden einer MIME-Datei per E-Mail [solved] Netzwerkprogrammierung 5
N E-mail versenden Netzwerkprogrammierung 4
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
T SWT Image versenden Netzwerkprogrammierung 2
T Einzelne Bits per Socket versenden Netzwerkprogrammierung 16
F Link erzeugen und versenden Netzwerkprogrammierung 4
O Wert versenden? Netzwerkprogrammierung 12
G Datein versenden funktioniert nicht ! Netzwerkprogrammierung 19
S Objekt Felder versenden Netzwerkprogrammierung 5
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
G Bytes versenden Netzwerkprogrammierung 9
G Datei über ObjectInputStream versenden Netzwerkprogrammierung 8
B Strings versenden | Nur 1 Client Netzwerkprogrammierung 6
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
V Kann keine DatagramPackets versenden von einem Jar Archiv Netzwerkprogrammierung 4
J Problem beim versenden von eigenen Objekten über RMI Netzwerkprogrammierung 2
S Dateien versenden Netzwerkprogrammierung 16
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
F IP "versenden" Netzwerkprogrammierung 6
N *.* Dateien versenden im Lan Netzwerkprogrammierung 5
H Versenden von Objekt Netzwerkprogrammierung 2
L JavaMail: Versenden von mails funktioniert nicht Netzwerkprogrammierung 7
O Sms versenden Netzwerkprogrammierung 5
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
S E-Mails versenden. Netzwerkprogrammierung 10
D Bits über UDP versenden Netzwerkprogrammierung 3
M generelle Frage zum Versenden Netzwerkprogrammierung 4
T Mit JavaMail API Faxe versenden? Netzwerkprogrammierung 5
K Files versenden Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben