Java 소켓 통신 시 구조체(?) 전송
글쓴이: 버그소년 / 작성시간: 화, 2005/09/13 - 10:20오전
난생 처음으로 Java를 가지고 작업을 하다보니 갑갑하네요.
보통 C에서 송수신 할 때
char buff[1024]; struct Header *header; ... recv ( buff, sizeof ( struct Header), ... ); [b]header = (struct Header *) buff;[/b]
이런식으로 buff를 Header 포인터로 변환해서 바로 사용합니다.
DataInputStream의 read ( byte[], ... ); 를 이용해서 하려고 하는데
도무지 감이 안오는군요.
모든 예제는 string을 전송하는 것이라 별 도움이 안되고..
데이터를 string으로 하려니 매번 파싱하는것도 귀찮은 일이고...
C에서처럼 구조체 형태로 송수신 할 수 있는 방법이 있는지 궁금합니다.
Forums:
서버/클라이언트를 다 작업하시는 중인가요?원하시는게 이런건가요?
서버/클라이언트를 다 작업하시는 중인가요?
원하시는게 이런건가요?
http://java.sun.com/j2se/1.5.0/docs/api/java/io/ObjectInputStream.html
May The Force Be With You.
객체를 입출력하는 방법이 있었군요.그런데, [code:1]
객체를 입출력하는 방법이 있었군요.
그런데,
접속이 된 후 client_socket으로부터 InputStream/OutputStream
은 잘 생성이 되는데 ObjectInputStream/ObjectOutputStream
을 생성할때 멈춰버리는군요.
왜 이런건지...
가끔은 밥을 굶어도 살 수 있다.
Serializable interface는 구현하셨나요?
Serializable interface는 구현하셨나요?
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
답변 고맙습니다.implements Serializable을 하니
답변 고맙습니다.
implements Serializable을 하니 잘 되는군요.
Serializable interface를 구현하지 않아도 잘 되는군요..
(내부적으로 구현이 되어있는건지...)
그런데 한참 삽질을 했습니다.
서버는 제 PC(eclipse)에서 테스트 하고, 클라이언트는 Linux에서 테스트 했는데,
계속 클래스를 못찾는다는 에러만...
각 장비에서 소스코드를 컴파일 하니 클래스를 못찾더군요.
그래서 리눅스에서 모두 컴파일하고 *.class 를 복사해서
실행하니 잘 되네요...
이게...전송할 클래스가 컴파일될때,
각 클래스의 고유 ID가 생성되는거 같은데,
같은 코드를 컴파일 해도 컴파일 환경에따라 이 ID가 달라지는건지,
eclipse에서 컴파일할때 패키지로 묶여있어서 그런건지...
꼭 같은 환경에서 컴파일된 *.class 파일이 양쪽에 있어야만 전송이 되는건지 궁금하네요.
예를들어 클래스 ID를 임의로 지정해준다던가... 체크하지 않고
강제로 케스팅한다던가.. 뭐.. 그런...
특별한 의미는 없지만 가능한지 궁금하네요..
가끔은 밥을 굶어도 살 수 있다.
[code:1]The serializable class UserAccou
The serializable class UserAccountData does not declare a static final serialVersionUID field of type long UserAccountData.java
직접 실험 해보진 않았지만 (저는 무시해버리지만...8)) 위와 같은 경고 메시지가 출현하는 것을 보면 Serializable을 구현하는 양쪽 클래스에서 serialVersionUID member variable을 똑같이 만들어주면 될것같습니다만... 실험은 버그소년님께서... 8)-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
댓글 달기