과거에는 채팅 프로그램을 작성하고 문자열로 직접 서버에 표시를 보냈다가 전달했습니다.
이제 객체 흐름으로 객체를 직접 보내고 테스트 한 다음 기록합니다.
사실, 나는 JSON과 함께 물건을 보내는 경향이 있습니다.
주요 기능 : 클라이언트가 서버로 객체를 보내고 서버가 수신합니다. 다른 방법은 거의 동일하므로 쓰지 않을 것입니다.
위는 전체 아키텍처입니다.
사용자 클래스는 두 가지 속성입니다.
다음과 같이 코드 코드를 복사하십시오.
패키지 com.qiantu.bean;
java.io.serializable import;
공개 클래스 사용자는 직렬화 가능한 {를 구현합니다.
개인 정적 최종 최종 긴 SerialversionUID = 1L;
개인 문자열 이름;
개인 문자열 비밀번호;
공개 문자열 getName () {
반환 이름;
}
public void setName (문자열 이름) {
this.name = 이름;
}
공개 문자열 getpassword () {
리턴 비밀번호;
}
public void setpassword (String password) {{
this.password = 비밀번호;
}
}
서버 측 : 클라이언트가 보낸 사용자 객체 :
다음과 같이 코드 코드를 복사하십시오.
패키지 테스트;
import java.io.buffredinputstream;
import java.io.ioexception;
import java.io.objectinputstream;
import java.net.serversocket;
import java.net.socket;
import 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 ());
Object obj = ois.readobject ();
if (obj! = null) {
사용자 = (사용자) OBJ;
System.out.println ( "사용자 :" + 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) {{
New TestServer ().
}
}
클라이언트 : 서버로 사용자 객체를 보내십시오.
다음과 같이 코드 코드를 복사하십시오.
패키지 클라이언트;
import java.io.ioexception;
import java.io.objectputstream;
import java.net.socket;
import java.net.unknownhostexception;
import com.qiantu.bean.user;
공개 수업 테스트 클리어 {
public static void main (String [] args) {{
new test (). 시작 ();
}
public void start () {
노력하다 {
소켓 소켓 = 새로운 소켓 ( "127.0.0.1", 7777);
// 입력 스트림을 만듭니다
ObjectPutStream OOS = 새로운 ObjectPutStream (소켓
.getPutStream ());
사용자 user = 새 사용자 ();
user.setName ( "Liang Guoqiao");
user.setpassword ( "123456");
// 객체를 입력하고 FLUGHT ()
oos.writeobject (사용자);
oos.flush ();
oos.close ();
socket.close ();
} catch (unknownhostException e) {{
e.printstacktrace ();
} catch (ioexception e) {{
e.printstacktrace ();
}
}
}
실행 결과 :
주의를 기울이십시오 :
"1"실제 클래스는 직렬화 가능한 클래스를 구현하고 식별 서비스 버전을 추가해야합니다.
"2"후 플러시 ()는 물체를 보냅니다.
"3"이 더 중요합니다.
서버의 양쪽에있는 물리적 범주는 정확히 동일하며 패키지 이름은 동일합니다. 나는 오랫동안 이름을 해왔다. 본질 본질 본질