In der Vergangenheit schrieb ich ein Chat -Programm und schickte ein Zeichen direkt mit einem Zeichenfolgen an den Server und leitete es dann weiter.
Jetzt bitte ich mich, das Objekt direkt mit dem Objektfluss zu senden, es zu testen und aufzuzeichnen.
Tatsächlich bin ich eher geneigt, Objekte mit JSON zu senden.
Hauptfunktionen: Der Client sendet ein Objekt an den Server, und der Server empfängt es. Der andere Weg ist fast gleich, also werde ich es nicht schreiben.
Das obige ist die Gesamtarchitektur.
Die Benutzerklasse ist zwei Attribute.
Kopieren Sie den Code -Code wie folgt:
Paket com.qiantu.bean;
Importieren java.io.serializable;
Benutzer der öffentlichen Klasse implementiert serialisierbar {
Private statische endgültige lange Serialversionuid = 1L;
Privater Zeichenfolge Name;
Privates Zeichenfolgenkennwort;
public String getName () {
Rückgabename;
}
public void setName (String Name) {
this.name = name;
}
Public String getPassword () {
Passwort zurückgeben;
}
Public void setPassword (String -Passwort) {{{
this.Password = Passwort;
}
}
Serverseite: Benutzerobjekt vom Client gesendet:
Kopieren Sie den Code -Code wie folgt:
Pakettest;
Importieren java.io.buffredInputStream;
Importieren java.io.ioException;
Importieren java.io.objectinputStream;
Importieren java.net.serversocket;
Importieren java.net.socket;
Import com.qiantu.bean.user;
public class testserver {
public void start () {
versuchen {
ServerSocket SS = New ServerSocket (7777);
System.out.println ("Start zu akzeptieren ...");
Socket Socket = ss.accept ();
// Eingabestream erstellen
ObjectStream OIS = New ObjectInputStream (
Neuer BufferedInputStream (socket.getInputStream ()));
Objekt obj = ois.readObject ();
if (obj! = null) {
User user = (user) obj;
System.out.println ("Benutzer:" + user.getName ());
System.out.println ("Passwort:" + user.getPassword ());
}
ois.close ();
socket.close ();
Ss.CLOSE ();
} Catch (ioException e) {{{{{
E. printstacktrace ();
} Catch (classNotFoundException e) {{{{{{{{{{{{{{{{{{{{{
E. printstacktrace ();
}
}
Public static void main (String [] args) {{{{{{{{{{
neuer TestServer ().
}
}
Client: Senden Sie ein Benutzerobjekt an den Server:
Kopieren Sie den Code -Code wie folgt:
Paket Client;
Importieren java.io.ioException;
Importieren java.io.objectputStream;
Importieren java.net.socket;
Importieren Sie java.net.unnownhostException;
Import com.qiantu.bean.user;
public class testclient {
Public static void main (String [] args) {{{{{{{{{{
neuer Test ().
}
public void start () {
versuchen {
Socket Socket = New Socket ("127.0.0.1", 7777);
// Eingabestream erstellen
Objektputstream OOS = neuer Objektputstream (Socket
.GetputStream ());
User user = new user ();
user.setName ("Liang Guoqiao");
user.setPassword ("123456");
// Geben Sie das Objekt ein, achten Sie darauf, dass Sie aufspülen ()
OOS.WriteObject (Benutzer);
oos.flush ();
OOS.CLOSE ();
socket.close ();
} Catch (unbekannthostException e) {{{{{{{{{{{{{{{{{{{{
E. printstacktrace ();
} Catch (ioException e) {{{{{
E. printstacktrace ();
}
}
}
Run Ergebnisse:
Beachten:
Die "1" -Schirschklasse sollte die serialisierbare Klasse implementieren und die Identification ServiceVersionuid hinzufügen.
Flush () nach dem "2" sendet das Objekt;
"3" ist wichtiger.
Die physische Kategorie auf beiden Seiten des Servers ist genau gleich. Ich mache den Namen schon lange. Wesen Wesen Wesen