Jeg har en Server og en klient, som skulle snakke sammen via en socket. Jeg har lavet det sådan at min server del, venter på at min klient logger på, og der efter tager ip adressen, hustnavn, og mangler nu at få brugernavnet. Brugernavnet bliver tastst ind i en jTextField1 i min klient del. /*TEST*/ jTextArea1.append("TEST 1"); Socket s = new Socket(localhost_1, localport_1); jTextArea1.append("TEST 2"); ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream()); jTextArea1.append("TEST 3"); oos.writeObject(jTextField1); /*TEST*/ Jeg kan se at der bliver printet TEST1 TEST 2TEST3 ud i mit jTextArea. bare en test for at det hele blev kørt igennem.
Når jeg starter min server op, så står den og venter på en forbindelse fra min klient:
/**Venter På At Klienten Skal Logge På - Satrt*/ MySqlBesked.append("\nServer klar, Venter på forespørgelse...\n"); try { Socket connectionsocket = minserver.accept(); InetAddress client = connectionsocket.getInetAddress(); RemoteIP = client.getHostAddress(); RemoteHostNavn = client.getHostName(); MySqlBesked.append("Klient Navn :" + " " + client.getHostName() + " Forbundet til server.\n"); MySqlBesked.append("Klient IP :" + " " + client.getHostAddress() + " Forbundet til server.\n"); BufferedReader input = new BufferedReader(new InputStreamReader (connectionsocket.getInputStream())); }
Min klient connecter fint, og min server nupper iip adressen fra min klient.
Men et TextArea felt på min server del bliver fyldt med en masse vrøvl og volapyk.
Jeg vil bare gerne have det brugernavn jeg har tastet ind i min jTextField på min klient, over i min TextArea på min server.
ServerSocket ss = new ServerSocket(port); Socket s = ss.accept(); ObjectInputStream ois = new ObjectInputStream(s.getInputStream()); String s = (String)ois.readObject(); tf.setText(s);
Socket s = new Socket(host, port); PrintWriter pw = new PrintWriter(s.getOutputStream()); pw.println(tf.getText());
og
ServerSocket ss = new ServerSocket(port); Socket s = ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); String s = br.readLine(); tf.setText(s);
dette her er min klient del Socket s = new Socket(host, port); PrintWriter pw = new PrintWriter(s.getOutputStream()); pw.println(tf.getText());
og det her er til min server del ServerSocket ss = new ServerSocket(port); Socket s = ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); String s = br.readLine(); tf.setText(s);
/*TEST FOR BRUGERNAVN PÅ KLIENT*/ Socket KlientBNSocket = new Socket(localhost_1, klientbrugernavnport); PrintWriter pw = new PrintWriter(KlientBNSocket.getOutputStream()); pw.println(jTextField1.getText()); jTextArea1.append("\nklientBrugerNavn: " + jTextField1.getText() + "\n"); /*TEST FOR BRUGERNAVN PÅ KLIENT*/
Nu er jeg da kommet så langt at jeg kan printe brugernavnet ud på min klient.
På min klient side, kan jeg nu printe det brugernavn ud i en jTextArea, som bliver tastst ind i mit jTextField. Med følgende:
I min public class i min Frame står der: String localhost_1 = "192.168.135.50"; int localport_1 = 6666; int klientbrugernavnport = 5555; /**Lokal Maskines IP*/ String localklientMachineIP = ""; /**maskinesn Navn*/ String klientName=""; /**Laver min tids konvatering*/ Date time = new Date(); DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd"); DateFormat df2 = new SimpleDateFormat("HH:mm:ss"); Socket echoSocket = null; String brugernavn = null; PrintWriter out = null; BufferedReader in = null; TraadForbindelse TraadForbindelse1 = null;
I min public void startklient i min Frame: /*TEST FOR BRUGERNAVN PÅ KLIENT*/ Socket KlientBNSocket = new Socket(localhost_1, klientbrugernavnport); PrintWriter pw = new PrintWriter(KlientBNSocket.getOutputStream()); pw.println(jTextField1.getText()); jTextArea1.append("\nklientBrugerNavn: " + jTextField1.getText() + "\n"); /*TEST FOR BRUGERNAVN PÅ KLIENT*/
Output til jTextArea1 bliver : klientBrugerNavn: MadMax
På min server del står der følgende: I min public class i min Tråd står der: package servergui; import java.net.ServerSocket; import java.net.*; import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.PrintWriter; import javax.swing.JTextArea; import javax.swing.JTextField; import java.io.InputStream; import java.io.OutputStream; import java.io.DataInputStream;
public Socket GetSocket() { return clientSocket; }
public PrintWriter GetPrintWriterOut() { return out; } public void run() { ServerSocket minserver = null; ServerSocket KlientbrugernavnS = null; try { minserver = new ServerSocket(Integer.parseInt(portnummer.getText())); SystemBesked.append("\nPort Nummer" + ":" + minserver); } catch (IOException e) { FejlBesked.append("Fejl 1" + "Kunn ikke lytte til port:" + " " + portnummer.getText()); System.exit(-1); } /**Venter På At Klienten Skal Logge På - Satrt*/ MySqlBesked.append("\nServer klar, Venter på forespørgelse...\n"); try { Socket connectionsocket = minserver.accept(); InetAddress client = connectionsocket.getInetAddress(); RemoteIP = client.getHostAddress(); RemoteHostNavn = client.getHostName(); MySqlBesked.append("Klient Navn :" + " " + client.getHostName() + " Forbundet til server.\n"); MySqlBesked.append("Klient IP :" + " " + client.getHostAddress() + " Forbundet til server.\n"); BufferedReader input = new BufferedReader(new InputStreamReader(connectionsocket.getInputStream())); /*TESR FOR BRUGERNAVN*/ KlientbrugernavnS = new ServerSocket(klientbrugernavnport); Socket connectionsocket_2 = KlientbrugernavnS.accept(); BufferedReader input_2 = new BufferedReader(new InputStreamReader(connectionsocket_2.getInputStream())); String s_1 = input_2.readLine(); MySqlBesked.append("\nKlient Brugernavn: " + s_1); MySqlBesked.append("\nKlient Brugernavn: " + KlientbrugernavnS); MySqlBesked.append("\nKlient Brugernavn: " + connectionsocket_2); MySqlBesked.append("\nKlient Brugernavn: " + input_2.readLine()); /*TESR FOR BRUGERNAVN*/ } catch (Exception e) { MySqlBesked.append("\nFejl 2 - TraadForbindelse:" + e.getMessage()); } /**Venter På At Klienten Skal Logge På - Slut*/ try { clientSocket = minserver.accept(); } catch (IOException e) { FejlBesked.append("Fejl 3" + "Accept failed::" + " " + portnummer.getText()); } try { out = new PrintWriter(clientSocket.getOutputStream(), true); } catch (IOException ex1) { } BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); } catch (IOException ex2) { } String inputLine, outputLine; try { /**Læsrer fra Socket forbindelen*/ while ( (inputLine = in.readLine()) != null) { ModtagerBesked.append(inputLine + "\n"); if (ModtagerBesked.equals("EXIT")) { break; } } SystemBesked.append("Server Lukker og Slukker"); out.close(); in.close(); minserver.close(); } catch (IOException ex) { } } private void jbInit() throws Exception { } }
Følgende outpul til min MySqlBeskeds felt bliver følgende: Klient Brugernavn: null Klient Brugernavn: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=5555] Klient Brugernavn: Socket[addr=/192.168.135.50,port=1476,localport=5555] Klient Brugernavn: null
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.