Q&A

  • Socket 통신에서 Server의 파일 다중 내려받기...
안녕하세요. 까마귀입니다.



Socket을 이용해서 Server에 있는 파일과 Client에 있는 파일을 비교를 합니다.

그 결과 서로 틀리면 Server에 있는 파일을 내려받기를 해서 Server에 있는 파일과

동기화 되도록 구현을 했습니다.

Server에 데몬을 띄워놓고 사용하는 방법인데요.

Server에 Client가 하나만 접속을 해서 내려받기를 하면 아무런 이상이 없는데요.

만약 둘이상의 Client가 접속을 해서 내려받기를 하니까 I/O Error 32가 나더군요.

또, Stream Read Error도 발생을 합니다.

내려받기를 할때, FileStream을 선언을 해서 하도록 했습니다.

위와 같은 상황에서 둘이상의 Client가 동시에 내려받기를 해도 이상없이 동작을

하려면 어떻게 해야 할까요?







위대한 단군혼이 살아있는 나라.... 대한민국.

3  COMMENTS
  • Profile
    이성윤 2000.11.30 22:43
    file open을 api로 하세요.



    델파이에서는 기본적으로 읽기 모드로 열어도 배타적으로 열고,그리고 열립니다.

    이예기는 모냐면

    다른 프로그램에서 파일을 사용하고 있다면 못연다는 이야기 입니다.



    이것은 다른 프로그램에서 파일을 사용하고 있다가

    delphi에서



    assignfile(f_n,filename) ;

    reset(f_n);을 해보면 안열리는것이 확인이 되것입니다.



    그리므로,가급적 파일을 관리할때는 api를 하용하는 것이 좋습니다.



    예제를 하나 드리죠

    uses Windows, ...



    var

    file_n:integer;

    buffer:tstringlist ;

    ..

    ..

    begin

    ..

    ..



    file_n:=openfile(pchar(filename),ofstr,of_read) ;

    f_n:=getfilesize(file_n,0) ;

    c_l:=0 ;

    t_size:=0 ;

    setfilepointer(file_n,0,nil,0) ;

    while t_size
    KK:='' ;

    c_l:=0 ;

    readfile( file_n,rsv_char,42,c_l,nil) ;

    t_size:=t_size+c_l ; //c_l에는 실제로 읽혀진 바이트가 들어갑니다.

    KK:= copy(rsv_char,1,c_l) ;

    buffer.add(KK) ;

    END ;

    end;





    예를 들어



  • Profile
    아이언 2000.11.29 20:21
    서버에서

    화일 오픈시 속성을

    잘 주세요..

    아마도 읽고 쓰기가 허용 되어 있는 것 같습니다.

    읽는거만.. 하시면..!



    --------------------------------------------



    까마귀 wrote:

    > 안녕하세요. 까마귀입니다.

    >

    > Socket을 이용해서 Server에 있는 파일과 Client에 있는 파일을 비교를 합니다.

    > 그 결과 서로 틀리면 Server에 있는 파일을 내려받기를 해서 Server에 있는 파일과

    > 동기화 되도록 구현을 했습니다.

    > Server에 데몬을 띄워놓고 사용하는 방법인데요.

    > Server에 Client가 하나만 접속을 해서 내려받기를 하면 아무런 이상이 없는데요.

    > 만약 둘이상의 Client가 접속을 해서 내려받기를 하니까 I/O Error 32가 나더군요.

    > 또, Stream Read Error도 발생을 합니다.

    > 내려받기를 할때, FileStream을 선언을 해서 하도록 했습니다.

    > 위와 같은 상황에서 둘이상의 Client가 동시에 내려받기를 해도 이상없이 동작을

    > 하려면 어떻게 해야 할까요?

    >

    >

    >

    > 위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    2000.11.29 19:47
    강좌란에 보세요... 강좌에 설명이 되어 있답니다. 자세한걸 원하시면 메일을 주세용.^^