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
sendHost Klasse
Und hier die beiden aufrufenden Klassen
sender Klasse
Receiver Klasse
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();
}
}