В прошлом я писал программу чата и отправлял знак на сервере напрямую со строками, а затем отправил ее.
Теперь я прошу меня отправить объект напрямую с помощью потока объектов, проверить его и записывать его.
На самом деле, я более склонен отправлять объекты с JSON.
Основные функции: клиент отправляет объект на сервер, и сервер получает его. Другой путь почти такой же, поэтому я не буду писать это.
Вышеуказанное - общая архитектура.
Пользовательский класс - два атрибута.
Код кода копирования следующим образом:
пакет com.qiantu.bean;
Импортировать java.io.serializable;
Пользователь публичного класса реализует сериализуемые {
Частный статический конечный длинный SerialVersionuid = 1L;
Приватное название строки;
Private String Password;
public String getName () {
Вернуть имя;
}
public void setName (string name) {
this.name = name;
}
Public String getPassword () {
Вернуть пароль;
}
Public void setPassword (String password) {{{
this.password = пароль;
}
}
Сторона сервера: объект пользователя, отправленный клиентом:
Код кода копирования следующим образом:
Пакет -тест;
Импортировать java.io.buffredinputstream;
Импортировать java.io.ioexception;
Импортировать java.io.objectinputstream;
Импортировать java.net.serversocket;
Импортировать java.net.socket;
Импорт com.qiantu.bean.user;
открытый класс TestServer {
public void start () {
пытаться {
Serversocket ss = новый серверный сокет (7777);
System.out.println («Начните принять ...»);
Сокет сокет = ss.accept ();
// Создать поток ввода
ObjectStream ois = new ObjectInputStream (
Новый BufferedInputStream (Socket.getInputStream ()));
Object OBJ = OIS.ReadObject ();
if (obj! = null) {
Пользователь пользователь = (пользователь) obj;
System.out.println ("user:" + user.getName ());
System.out.println ("пароль:" + 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 ().
}
}
Клиент: отправьте пользовательский объект на сервер:
Код кода копирования следующим образом:
пакет клиент;
Импортировать java.io.ioexception;
Импортировать java.io.objectputstream;
Импортировать java.net.socket;
Импорт java.net.unknownhostexception;
Импорт com.qiantu.bean.user;
открытый класс TestClient {
Public static void main (string [] args) {{
новый тест ().
}
public void start () {
пытаться {
Сокет сокета = новый сокет ("127.0.0.1", 7777);
// Создать поток ввода
ObjectPutStream OOS = new ObjectPutStream (сокет
.getPutStream ());
Пользователь пользователь = новый пользователь ();
user.setname ("Liang Guoqiao");
user.setPassword ("123456");
// Введите объект, обязательно промыть ()
OOS.WriteObject (пользователь);
oos.flush ();
oos.close ();
Socket.Close ();
} Catch (Unknownhostexception e) {{
e.printstacktrace ();
} Catch (ioException e) {{{
e.printstacktrace ();
}
}
}
Результаты запустить:
Обратите внимание на:
Физический класс «1» должен реализовать сериализуемый класс и добавить идентификационную службу.
Flush () после «2» отправляет объект;
«3» важнее.
Физическая категория по обе стороны сервера точно такая же. Я долго делал имя. Сущность Сущность Сущность