Dans le passé, j'ai écrit un programme de chat et envoyé un panneau au serveur directement avec une chaîne, puis je l'ai transmis.
Maintenant, je me demande d'envoyer l'objet directement avec le flux d'objet, de le tester et de l'enregistrer.
En fait, je suis plus enclin à envoyer des objets avec JSON.
Fonctions principales: le client envoie un objet au serveur et le serveur le reçoit. L'autre moyen est presque la même, donc je ne l'écrirai pas.
Ce qui précède est l'architecture globale.
La classe utilisateur est deux attributs.
Copier le code du code comme suit:
Package com.qiantu.bean;
Import java.io.serializable;
La classe publique l'utilisateur implémente sérialisable {
Long SerialVersionUID privé statique statique = 1L;
Nom de chaîne privé;
Mot de passe de chaîne privé;
public String getName () {
Nom de retour;
}
public void setName (nom de chaîne) {
this.name = name;
}
Public String getPassword () {
Retour de mot de passe;
}
Public void setPassword (String Motword) {{{{
this.password = mot de passe;
}
}
Côté serveur: objet utilisateur envoyé par le client:
Copier le code du code comme suit:
test de package;
Importer java.io.buffredInputStream;
Importer java.io.ioException;
Import java.io.objectInputStream;
Import java.net.serversocket;
Import java.net.socket;
Import com.qiantu.bean.user;
Classe publique TestServer {
public void start () {
essayer {
SERVERSOCKET SS = NOUVEAU SERVERSOCKET (7777);
System.out.println ("Commencez à accepter ...");
Socket socket = ss.accept ();
// Créer un flux d'entrée
ObjectStream ois = new ObjectInputStream (
Nouveau tamponInutStream (socket.getInputStream ()));
Objet obj = ois.readObject ();
if (obj! = null) {
Utilisateur utilisateur = (utilisateur) obj;
System.out.println ("utilisateur:" + user.getName ());
System.out.println ("Mot de passe:" + user.getPassword ());
}
oi.close ();
socket.close ();
ss.close ();
} Catch (ioexception e) {{
e.printStackTrace ();
} Catch (classNotFoundException e) {{{
e.printStackTrace ();
}
}
Public static void main (String [] args) {{{
Nouveau TestServer ().
}
}
Client: Envoyez un objet utilisateur au serveur:
Copier le code du code comme suit:
Client de package;
Importer java.io.ioException;
Importer java.io.objectStstream;
Import java.net.socket;
Import java.net.unknownhostException;
Import com.qiantu.bean.user;
classe publique TestClient {
Public static void main (String [] args) {{{
Nouveau test ().
}
public void start () {
essayer {
Socket socket = new socket ("127.0.0.1", 7777);
// Créer un flux d'entrée
ObjectPutStream OOS = new ObjectPutStream (Socket
.GetputStream ());
Utilisateur utilisateur = nouveau utilisateur ();
user.setName ("liang guoqiao");
user.setpassword ("123456");
// Entrez l'objet, assurez-vous de Flush ()
Oos.writeObject (utilisateur);
oos.flush ();
oos.close ();
socket.close ();
} Catch (inconnuhostException e) {{{{{
e.printStackTrace ();
} Catch (ioexception e) {{
e.printStackTrace ();
}
}
}
Résultats de l'exécution:
Faites attention à:
La classe physique "1" doit implémenter la classe de sérialisable et ajouter le service d'identification VersionIID.
Flush () après que le "2" envoie l'objet;
"3" est plus important.
La catégorie physique des deux côtés du serveur est exactement la même. Je fais le nom depuis longtemps. Essence Essence Essence