Di masa lalu, saya menulis program obrolan dan mengirim tanda ke server secara langsung dengan string, dan kemudian meneruskannya.
Sekarang saya meminta saya untuk mengirim objek secara langsung dengan aliran objek, mengujinya, dan merekamnya.
Bahkan, saya lebih cenderung mengirim objek dengan JSON.
Fungsi Utama: Klien mengirim objek ke server, dan server menerimanya. Cara lain hampir sama, jadi saya tidak akan menulisnya.
Di atas adalah arsitektur keseluruhan.
Kelas pengguna adalah dua atribut.
Salin kode kode sebagai berikut:
paket com.qiantu.bean;
Impor java.io.serializable;
Pengguna kelas publik mengimplementasikan Serializable {
Private static final long serialversionuid = 1L;
Nama string pribadi;
Kata sandi string pribadi;
Public String getName () {
Nama pengembalian;
}
public void setName (nama string) {
this.name = name;
}
Public String getPassword () {
Mengembalikan kata sandi;
}
Public void setPassword (string password) {{
this.password = kata sandi;
}
}
Sisi Server: Objek Pengguna Dikirim oleh Klien:
Salin kode kode sebagai berikut:
tes paket;
Impor java.io.buffredinputStream;
Impor java.io.ioException;
Impor java.io.objectInputStream;
Impor java.net.serversocket;
Impor java.net.socket;
Impor com.qiantu.bean.user;
TestServer kelas publik {
public void start () {
mencoba {
ServerSocket SS = New ServerSocket (7777);
System.out.println ("Mulai terima ...");
Soket soket = ss.accept ();
// Buat aliran input
ObjectStream OIS = ObjectInputStream baru (
BufferedInputStream baru (socket.getInputStream ()));
Objek obj = ois.readObject ();
if (obj! = null) {
Pengguna pengguna = (pengguna) obj; // mengubah objek yang diterima menjadi pengguna
System.out.println ("Pengguna:" + user.getName ());
System.out.println ("Kata sandi:" + user.getPassword ());
}
ois.close ();
socket.close ();
ss.close ();
} Catch (ioException e) {{
e.printstacktrace ();
} Catch (classnotfoundException e) {{
e.printstacktrace ();
}
}
Public static void main (string [] args) {{{{{{{{
TestServer baru ().
}
}
Klien: Kirim objek pengguna ke server:
Salin kode kode sebagai berikut:
Paket klien;
Impor java.io.ioException;
Impor java.io.objectputStream;
Impor java.net.socket;
Impor java.net.unknownhostException;
Impor com.qiantu.bean.user;
TestClient kelas publik {
Public static void main (string [] args) {{{{{{{{
tes baru ().
}
public void start () {
mencoba {
Soket soket = soket baru ("127.0.0.1", 7777);
// Buat aliran input
ObjectputStream oos = ObjectPutStream baru (soket
.getputStream ());
Pengguna pengguna = pengguna baru ();
user.setname ("Liang Guoqiao");
user.setPassword ("123456");
// Masukkan objek, pastikan untuk flush ()
Oos.writeObject (pengguna);
oos.flush ();
oos.close ();
socket.close ();
} Catch (unknownHostException e) {{
e.printstacktrace ();
} Catch (ioException e) {{
e.printstacktrace ();
}
}
}
Jalankan Hasil:
Perhatikan:
Kelas fisik "1" harus mengimplementasikan kelas serializable, dan menambahkan identifikasi serviceVersionuid.
Flush () Setelah "2" mengirimkan objek;
"3" lebih penting.
Kategori fisik di kedua sisi server persis sama. Saya telah melakukan nama untuk waktu yang lama. Esensi Esensi Esensi