파일 전송하고 받는 코드입니다

파일 수신송신의 개념을 잡고자 간단한 코드를 돌려보는데요
파일이 저장될때 0바이트로 저장됩니다.
즉, 소스가 제대로된게 아니라는 거겠죠 ㅠㅠ?
원인을 찾고자 중간중간 프린트문을 넣어서 확인해서
바이트단위로 쓰는 와일문쪽으로는 들어가지도 않는다는걸 알았습니다
이유가 뭘까요 ㅠㅠ?

================================================================================================[파일 보내기]

import java.net.*;
import java.io.*;
public class FileSend {

public static void main(String args[]) {
int poNum = 5008;
String filePath = C:/Java/MyProject/;
String fileName = aaa.mp3;

try {

ServerSocket ss = new ServerSocket(poNum);
System.out.println(서버소켓 생성완료);

Socket sss = ss.accept();
System.out.println(소켓 +sss+ 에 연결됨);

OutputStream os = sss.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
System.out.println(파일 : + filePath + fileName);

bw.write(fileName + \n);
bw.flush();

DataInputStream dis = new DataInputStream(new FileInputStream(new File(filePath + fileName)));
DataOutputStream dos = new DataOutputStream(os);

int i = dis.read();
System.out.println(i); // 이부분에서 i 값이 -1 이 나와버려서 이 밑에 와일문이 실행되지 않습니다

int i = 0;
while( (i = dis.read()) = -1 ) {
dos.writeByte(i);
dos.flush();
}
System.out.println(파일 송신 완료!!);

dis.close();
dos.close();
sss.close();
ss.close();
bw.close();

dis = null;
dos = null;
sss = null;
ss = null;
bw = null;

} catch (Exception e) {
System.out.println(e);
}
}
}===================================================================================================

[파일받기]

import java.net.*;
import java.io.*;
public class FileRecive {

public static void main(String args[]) {

int poNum = 5008;
String IPAdd = 211.244.38.51;
String filePath = C:/Java/MyProject/test/;

try {

Sonbsp; Socket s = new Socket(IPAdd, poNum);
System.out.println(소켓생성);
InputStream is = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
System.out.println(버퍼리더 생성);

String sfileName = br.readLine();
System.out.println(sfileName);

File f = new File(filePath, sfileName);
System.out.println(파일객체생성);

FileOutputStream out = new FileOutputStream(f);
System.out.println(기록할 파일 연결);

int i = is.read();
System.out.println(i); // 이부분에서 i 값이 -1 이 나와버려서 이 밑에 와일문이 실행되지 않습니다

int i = 0;
while((i = is.read())!=-1) {
System.out.println(i);
out.write((char)i);
} System.out.println(파일 수신 완료!!);

br.close();
is.close();
out.close();
s.close();

br=null;
is=null;
out=null;
s=null;

} catch (Exception e) {
System.out.println(e);
}

}
}
===========================================================================================

댓글 4

  • 세나 2026.04.28

    아! 그렇네요 ;;; 답변 감사합니다 ㅎㅎㅎㅎ

  • 도담 2026.04.28

    넷빈은 제가 안써봐서 잘 모르겠지만요 while( (i = dis.read()) = -1 ) { 여기에서 while 문 조건절에 결국 남는것은 i=-1 다시 말해 int 형은 i 가 오게되죠. 조건절에는 boolean 이 와야 하는데 int 가 옴으로 컴파일 에러 발생. 그리고 int i 선언 후 밑에서 또 다시 int i 선언하여 컴파일 에러가 발생 됩니다. 그리고 또 있었나? @@;; 훔.. 코드 테스트를 어제 해봤던 것이라 그닥 기억이 안나네요 ㅋ

  • 얀 2026.04.28

    컴파일이 안되나요? ;;; 넷빈으로 컴파일 했는데 돌아가긴 하던데요 ;;;
    단지 와일로 아예 안들어가고 그냥 파일수신, 송신완료만 뜨는게 문제긴 하지만;
    코드는 정말 저게 다예요;
    원인은 aaa.mp3가 이것저것 하는 도중에 내용이 지워져서 0이었던 것까진 알았지만
    괜찮으시다면 어느부분을 수정하셨는지 알려주실수 있을까요?

  • YourWay 2026.04.28

    훔... 봐드릴려고 해도 컴파일 조차 안되는 코드를 왜 안되는건지 봐줄수도 없지 않겠습니까? ㅡ0ㅡ//
    뭐... 어쨌든 컴파일 되도록 몇군데 수정하고 나니 잘 되던데... 훔...
    정확한 코드를 올려주세요. 그래야 어디가 잘못 된건지 알수 있을테니까요

프로그램 개발일반 다른 글

목록