2012-02-01 2 views
0

정상적인 Java 소켓 프로그래밍을 사용하여 알려진 파일을 성공적으로 전송합니다. 전송 된 파일 이름 보유

Socket sock = new Socket("192.168.1.3", 6789); 
byte[] mybytearray = new byte[9999]; 
InputStream is = sock.getInputStream(); 
FileOutputStream fos = new FileOutputStream("filename.txt"); 
BufferedOutputStream bos = new BufferedOutputStream(fos); 
int bytesRead = is.read(mybytearray, 0, mybytearray.length); 
bos.write(mybytearray, 0, bytesRead); 
bos.close(); 
sock.close(); 

그러나 내가 명시 적으로 filename.txt로 수신 파일의 이름을 가지고이 코드에서, 내가 전달지고 파일의 이름을 유지하려면이 내 코드입니다. 한 가지 방법은 파일의 이름을 명시 적으로 전송 한 다음 파일을 전송하는 것입니다 (나는 맞다고 생각합니다). 그렇지 않으면 다른 방법이 있습니까?

답변

4

소켓에 파일 이름이 없습니다. 소켓에서 바이트를 읽는다면 아무 것도 될 수 있습니다.

당신이 스트림에서 파일의 이름을 추가하고 스트림을 변경할 수없는 경우 내용

을에서 표시하는 구분 기호를 사용한다

+0

동의합니다. 그러나 바이트를 전송할 파일 이름을 유지할 방법이 있습니까? – Purushottam

1

는 최악의 경우는 이름을 보내는 경우에만 다른 연결을 사용하는 것입니다 닫은 다음 다른 스트림에서 내용을 읽습니다.

1

파일 바이트를 성공적으로 전송하기 위해 소스의 파일 이름이 대상과 관련이없는 파일과 관련된 바이트 스트림을 전송합니다. 소스에서 제공된 파일의 이름을 신경 쓰면 해당 파일 이름을 대상에 개별적으로 보내십시오.