안녕 하세요...
전 대구대 학생이구요... 서버와 클라이언트 소켓으로 인터넷메신저를 만들어
보고 있습니다.
다름이 아니라 파일을 첨부하여 전송하려구 하는데 잘 되지를 않아서 이렇게
질문을 올립니다.
델코에도 올려 봤지만 시원한 대답과 방법을 찾지를 못했습니다.
어떤 파일을 일정한 크기로 잘라서 보내라는 대답을 들었었는데...
그 방법을 모르겠습니다.
파일을 열어서 일정한 크리만큼 읽어서 버퍼에 넣었습니다.
그리고 sendbuf 했는데 문제는 받는측에서의 receivebuf 입니다.
이것은 보내는 쪽의 소스입니다.
procedure TForm1.Button1Click(Sender: TObject);
var
source: integer;
i : integer;
buffer : array [0..1023] of byte;
begin
if opendialog1.Execute then
source := fileopen (opendialog1.filename, fmopenread);
i := fileread (source , buffer,sizeof(buffer));
while i > 0 do begin
clientsocket1.Socket.SendBuf (buffer,i);
i := fileread (source, buffer,sizeof(buffer));
end;
fileclose(source);
end;
이것은 받는쪽의 소스입니다.
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i : integer;
buffer : array [0..1023] of byte;
begin
target := fileopen('d:testfilesendaaa',fmopenwrite);
i := serversocket1.socket.ReceiveBuf(buffer,1024);<-????이부분
filewrite(target,buffer,i);
fileclose(target);
end;
제 생각에는 이렇게 하면 간단히 갈거란 생각을 했는데 이게 아니더라구요...
주고 받는데 에러가 납니다.
보내는 쪽과 받는 쪽에서 신경을 써야 할 부분이 어떤것인지요?
시원한 대답과 함께... 소스의 잘못된 점을 지적해 주십시오..
> 안녕 하세요...
> 전 대구대 학생이구요... 서버와 클라이언트 소켓으로 인터넷메신저를 만들어
> 보고 있습니다.
> 다름이 아니라 파일을 첨부하여 전송하려구 하는데 잘 되지를 않아서 이렇게
> 질문을 올립니다.
> 델코에도 올려 봤지만 시원한 대답과 방법을 찾지를 못했습니다.
>
> 어떤 파일을 일정한 크기로 잘라서 보내라는 대답을 들었었는데...
> 그 방법을 모르겠습니다.
> 파일을 열어서 일정한 크리만큼 읽어서 버퍼에 넣었습니다.
> 그리고 sendbuf 했는데 문제는 받는측에서의 receivebuf 입니다.
>
> 이것은 보내는 쪽의 소스입니다.
> procedure TForm1.Button1Click(Sender: TObject);
> var
> source: integer;
> i : integer;
> buffer : array [0..1023] of byte;
> begin
> if opendialog1.Execute then
> source := fileopen (opendialog1.filename, fmopenread);
> i := fileread (source , buffer,sizeof(buffer));
> while i > 0 do begin
> clientsocket1.Socket.SendBuf (buffer,i);
> i := fileread (source, buffer,sizeof(buffer));
> end;
> fileclose(source);
>
> end;
>
> 이것은 받는쪽의 소스입니다.
> procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
> Socket: TCustomWinSocket);
> var
> i : integer;
> buffer : array [0..1023] of byte;
> begin
> target := fileopen('d:testfilesendaaa',fmopenwrite);
> i := serversocket1.socket.ReceiveBuf(buffer,1024);<-????이부분
> filewrite(target,buffer,i);
> fileclose(target);
> end;
>
> 제 생각에는 이렇게 하면 간단히 갈거란 생각을 했는데 이게 아니더라구요...
> 주고 받는데 에러가 납니다.
> 보내는 쪽과 받는 쪽에서 신경을 써야 할 부분이 어떤것인지요?
> 시원한 대답과 함께... 소스의 잘못된 점을 지적해 주십시오..
소