소켓 연결을 통해 서로 다른 두 패키지의 클라이언트에서 서버로 작업 (정수 배열)을 보내는데 문제가 있습니다. 어떤 아이디어라도 제발?Java 소켓 프로그래밍에서 클라이언트에서 서버로 정수 배열을 보내고받는 방법은 무엇입니까?
제 질문에 대한 설명이 충분하지 않은 경우 추가 설명이 가능합니다.
소켓 연결을 통해 서로 다른 두 패키지의 클라이언트에서 서버로 작업 (정수 배열)을 보내는데 문제가 있습니다. 어떤 아이디어라도 제발?Java 소켓 프로그래밍에서 클라이언트에서 서버로 정수 배열을 보내고받는 방법은 무엇입니까?
제 질문에 대한 설명이 충분하지 않은 경우 추가 설명이 가능합니다.
배열로 보내야합니까? 전체 과정을 복잡하게 만듭니다. 콜렉션이나 일종의 List로 포장하지 않으시겠습니까? 즉 :
ObjectOutputStream oos = new ObjectOutputStream(...);
oos.writeObject(integerCollection);
ObjectInputStream ois = new ObjectInputStream(...);
Collection integerCollection = (Collection)ois.readObject();
가 나는 DataOutputStream
에 BufferedOutputStream
에서 SocketOutputStream
포장 반복 후자의 writeInt()
방법을 사용, 제목의 질문에 대답합니다. 또는 DataOutputStream
대신 ObjectOutputStream
을 사용하고 배열을 objOutStream.writeObject(theArray)
으로 직렬화 할 수 있습니다. 다른 쪽에서 다시 읽으려면 SocketInputStream
을 (1) DataInputStream
으로 감싸고 readInt()
을 반복적으로 사용하거나 (2) 을 사용하고 readObject()
을 사용합니다.
죄송합니다. 귀하가 보내 주신 답변을 코드 또는 의사 코드로 번역하여 좀 더 기술적으로 기술 할 수 있습니까? – efe
이
List a=new List()
우리가 서버
에게 보낼 수ArrayList a=new ArrayList(n) //n represents size
또는
을 사용 (당신은Object*Stream
당신에 쉽게 다른 언어와 상호 운용 할 필요가없는 경우)
링크를 통해이 데이터를 전송하기 위해 사용하는 프로토콜은 무엇입니까? 배열을 출력 스트림에 직렬화 할 수있는 객체로 래핑 할 수 있습니다.
TCP :이 경우 매우 간단해야합니다. 전송 계층은 개체의 조각화를 처리하고 링크의 다른 끝에서 개체를 가져옵니다.
UDP : 상황이 조금 복잡 할 수 있습니다. 직렬화하려는 객체가 UDP 버퍼보다 크면 (바이트 단위로) 데이터를 가져올 수 없습니다. 이 경우 기본 UDP 버퍼 크기보다 작은 청크로 데이터를 보낼 수 있습니다.
감사합니다.
무슨 문제입니까? 그리고 "패키지"는 무엇을 의미합니까? –
문제 코드의 예를 게시하십시오. 그것은 당신에게 지침을주는 데 엄청난 도움이 될 것입니다. –
두 개의 다른 패키지가 필요하다는 것은 무엇을 의미합니까? 패킷을 의미합니까? 그렇다면 패킷 수 또는 크기에 대해 걱정할 필요가 있습니다. –