내가 쓴 클라이언트 - 서버 응용 프로그램은 작동하지만 모든 데이터가 매번 처리되는 것 같지는 않습니다.Java - 소켓을 통한 데이터 전송 UDP .. rec. 모든 데이터
Eclipse 환경에서 로컬 시스템에서 테스트하고 있습니다.
서버 :
private void sendData() throws Exception
{
DatagramPacket data = new DatagramPacket(outgoingData, outgoingData.length, clientAddress, clientPort);
InputStream fis = new FileInputStream(responseData);
int a;
while((a = fis.read(outgoingData,0,512)) != -1)
{
serverSocket.send(data);
}
}
클라이언트 :
다른 경우 나는 동안이하는 데 사용private void receiveData() throws Exception
{
DatagramPacket receiveData = new DatagramPacket(incomingData, incomingData.length);
OutputStream fos = new FileOutputStream(new File("1"+data));
while(true)
{
clientSocket.receive(receiveData);
fos.write(incomingData);
}
}
(참) 루프는 패킷 길이는 경우에 그것을 알고 미만 512 바이트 있도록되어 있는지 확인하려면 단절;
내가 거기에 문제 오순절이었다고하지만 지금 난 그냥 몇 분 정도 기다렸다가 Client.java 응용 프로그램파일이 전송을 수행하지만, 원본 파일 지금까지 852킬로바이트하고 중지를위한두면이었다 보인다 생각
나는 777, 800, 850을 가지고있다. 그러나 결코 그것의 누구나.
스트림을 플러시 해 보셨습니까? –
UDP가 신뢰할 수 없습니다. UDP 사양은 UDP가 소스에서 수신자로 패킷을 가져 오는 "최선의 노력"을하지만 패킷이 삭제되고 수신자/발신자에게 알림이 전송되지 않는다고 명시합니다. 안정적으로 데이터를 보내야하는 경우 일종의 패킷 손실 감지 체계를 구현하거나 대신 TCP를 사용해야 할 것입니다. 현지 감각으로 너무 많은 패킷을 잃어 버리는 것은 다소 이상하지만 로컬 UDP 연결이 안정적이어야한다는 어떠한 계약도 없습니다. – CodeBlind
나는 이해한다. 그러나 나는 가능한 한 많은 것을 얻는 것을 도울 수있는 방법을 찾아 내려고 노력 중이다. –