過去に、私はチャットプログラムを書き、文字列で直接サーバーにサインを送信し、それを転送しました。
今、私はオブジェクトフローで直接オブジェクトを送信し、それをテストし、それを記録するように頼みます。
実際、私はJSONでオブジェクトを送信する傾向があります。
主な機能:クライアントはサーバーにオブジェクトを送信し、サーバーが受信します。もう一方の方法はほぼ同じなので、私はそれを書きません。
上記は全体的なアーキテクチャです。
ユーザークラスは2つの属性です。
次のようにコードコードをコピーします。
パッケージcom.qiantu.bean;
java.io.serializableをインポートします。
パブリッククラスのユーザーはシリアル化可能です{
private static final long serialversionuid = 1l;
プライベート文字列名;
プライベート文字列パスワード。
public string getName(){
返品名;
}
public void setName(string name){
this.name = name;
}
public string getPassword(){
パスワードを返します。
}
public void setPassword(string password){{
this.password = password;
}
}
サーバー側:クライアントが送信したユーザーオブジェクト:
次のようにコードコードをコピーします。
パッケージテスト;
java.io.buffredinputStreamをインポートします。
java.io.ioexceptionをインポートします。
java.io.objectinputStreamをインポートします。
java.net.serversocketをインポートします。
java.net.socketをインポートします。
com.qiantu.bean.userをインポートします。
パブリッククラスのテストサーバー{
public void start(){
試す {
Serversocket SS = new Serversocket(7777);
system.out.println( "受け入れを開始...");
ソケットソケット= ss.Accept();
//入力ストリームを作成します
objectStream ois = new objectInputStream(
new BufferedInputStream(socket.getInputStream()));
オブジェクトobj = ois.readObject();
if(obj!= null){
ユーザーユーザー=(ユーザー)obj; //受信オブジェクトをユーザーに変換します
System.out.println( "user:" + user.getName());
System.out.println( "password:" + user.getPassWord());
}
ois.close();
socket.close();
ss.close();
} catch(ioException e){{
e.printstacktrace();
} catch(classNotFoundException e){{
e.printstacktrace();
}
}
public static void main(string [] args){{
new testserver();
}
}
クライアント:ユーザーオブジェクトをサーバーに送信します。
次のようにコードコードをコピーします。
パッケージクライアント。
java.io.ioexceptionをインポートします。
java.io.objectputStreamをインポートします。
java.net.socketをインポートします。
java.net.unknownhostexceptionをインポートします。
com.qiantu.bean.userをインポートします。
パブリッククラスのtestclient {
public static void main(string [] args){{
new test();
}
public void start(){
試す {
ソケットソケット= new Socket( "127.0.0.1"、7777);
//入力ストリームを作成します
ObjectputStream OOS = new objectputStream(socket
.getputStream());
user user = new user();
user.setname( "liang guoqiao");
user.setPassWord( "123456");
//オブジェクトを入力して、必ずフラッシュしてください()
oos.writeobject(user);
oos.flush();
oos.close();
socket.close();
} catch(unknownhostexception e){{
e.printstacktrace();
} catch(ioException e){{
e.printstacktrace();
}
}
}
結果の実行:
注意してください:
「1」の物理クラスは、シリアル化可能なクラスを実装し、識別ServiceVersionUidを追加する必要があります。
flush()「2」がオブジェクトを送信した後。
「3」はもっと重要です。
サーバーの両側の物理カテゴリはまったく同じです。パッケージ名は同じです。私は長い間名前をやっています。エッセンスエッセンスエッセンス