Q&A

  • 소켓을 이용한 전송시
안녕하세요.



소켓을 이용해서 파일 전송을 하고 있습니다.

그런데 이것을 이용하면서 한가지 문제점이 생기더군요.

클라이언트 소켓과 서버 소켓을 각각의 컴터가 가지고 있는 상태에서.

A라는 컴터가 여러 대의 컴퓨터가 접속한 상태에서 각 컴퓨터에

파일을 전송하다 보니 이상하더라구요. 사용하는 방법은 하나의

소켓을 이용해서 호스트주소를 바꾸어 가면서 각 컴퓨터에 전송을하고

있습니다. 이때 한대 넘어 한대 꼴로 전송이 되지 않습니다.

for문을 이용하구요. 소켓을 열거나 닫으면서 몇가지 더 처리 해야 하는

것이 있나 해서요. 고수님들의 답변 부탁드립니다.

4  COMMENTS
  • Profile
    구창민 2000.08.03 02:49
    siro wrote:

    > 안녕하세요.

    >

    > 소켓을 이용해서 파일 전송을 하고 있습니다.

    > 그런데 이것을 이용하면서 한가지 문제점이 생기더군요.

    > 클라이언트 소켓과 서버 소켓을 각각의 컴터가 가지고 있는 상태에서.

    > A라는 컴터가 여러 대의 컴퓨터가 접속한 상태에서 각 컴퓨터에

    > 파일을 전송하다 보니 이상하더라구요. 사용하는 방법은 하나의

    > 소켓을 이용해서 호스트주소를 바꾸어 가면서 각 컴퓨터에 전송을하고

    > 있습니다. 이때 한대 넘어 한대 꼴로 전송이 되지 않습니다.

    > for문을 이용하구요. 소켓을 열거나 닫으면서 몇가지 더 처리 해야 하는

    > 것이 있나 해서요. 고수님들의 답변 부탁드립니다.





    파일을 전송하는 부분의 소스를 보아야 근접한

    답변을 드릴수 있을거 같습니다



    그 부분의 소스만이라도 올려보실 수 있는지요?





  • Profile
    siro 2000.08.03 02:54
    구창민 wrote:

    > siro wrote:

    > > 안녕하세요.

    > >

    > > 소켓을 이용해서 파일 전송을 하고 있습니다.

    > > 그런데 이것을 이용하면서 한가지 문제점이 생기더군요.

    > > 클라이언트 소켓과 서버 소켓을 각각의 컴터가 가지고 있는 상태에서.

    > > A라는 컴터가 여러 대의 컴퓨터가 접속한 상태에서 각 컴퓨터에

    > > 파일을 전송하다 보니 이상하더라구요. 사용하는 방법은 하나의

    > > 소켓을 이용해서 호스트주소를 바꾸어 가면서 각 컴퓨터에 전송을하고

    > > 있습니다. 이때 한대 넘어 한대 꼴로 전송이 되지 않습니다.

    > > for문을 이용하구요. 소켓을 열거나 닫으면서 몇가지 더 처리 해야 하는

    > > 것이 있나 해서요. 고수님들의 답변 부탁드립니다.

    >

    >

    > 파일을 전송하는 부분의 소스를 보아야 근접한

    > 답변을 드릴수 있을거 같습니다

    >

    > 그 부분의 소스만이라도 올려보실 수 있는지요?

    >

    >



    C++ Builder로 작업을 하고 있구요. 델파이랑 문법적 차이는 없다고 생각합니다.

    음... 아래와 같이 리스트에 있는 IP를 가져와서 소켓에 정의하고.. 소켓을 열어서

    데이터를 보내고 바로 닫는데 .. 한번 걸러 한번으로 전송이 안되네요.. 혹시 여기에

    대해서 아시면 답변 부탁드립니다.



    for (int i=0; iItems->Count; i++) {

    if(IPList->Items->Strings[i] == LocalIP) continue;

    ClientSocket->Address = IPList->Items->Strings[i];

    ClientSocket->Open();

    ClientSocket->Socket->SendStream(Data);

    ClientSocket->Close();

    }



  • Profile
    구창민 2000.08.03 03:04
    siro wrote:

    > 구창민 wrote:

    > > siro wrote:

    > > > 안녕하세요.

    > > >

    > > > 소켓을 이용해서 파일 전송을 하고 있습니다.

    > > > 그런데 이것을 이용하면서 한가지 문제점이 생기더군요.

    > > > 클라이언트 소켓과 서버 소켓을 각각의 컴터가 가지고 있는 상태에서.

    > > > A라는 컴터가 여러 대의 컴퓨터가 접속한 상태에서 각 컴퓨터에

    > > > 파일을 전송하다 보니 이상하더라구요. 사용하는 방법은 하나의

    > > > 소켓을 이용해서 호스트주소를 바꾸어 가면서 각 컴퓨터에 전송을하고

    > > > 있습니다. 이때 한대 넘어 한대 꼴로 전송이 되지 않습니다.

    > > > for문을 이용하구요. 소켓을 열거나 닫으면서 몇가지 더 처리 해야 하는

    > > > 것이 있나 해서요. 고수님들의 답변 부탁드립니다.

    > >

    > >

    > > 파일을 전송하는 부분의 소스를 보아야 근접한

    > > 답변을 드릴수 있을거 같습니다

    > >

    > > 그 부분의 소스만이라도 올려보실 수 있는지요?

    > >

    > >

    >

    > C++ Builder로 작업을 하고 있구요. 델파이랑 문법적 차이는 없다고 생각합니다.

    > 음... 아래와 같이 리스트에 있는 IP를 가져와서 소켓에 정의하고.. 소켓을 열어서

    > 데이터를 보내고 바로 닫는데 .. 한번 걸러 한번으로 전송이 안되네요.. 혹시 여기에

    > 대해서 아시면 답변 부탁드립니다.

    >

    > for (int i=0; iItems->Count; i++) {

    > if(IPList->Items->Strings[i] == LocalIP) continue;

    > ClientSocket->Address = IPList->Items->Strings[i];

    > ClientSocket->Open();

    > ClientSocket->Socket->SendStream(Data);

    > ClientSocket->Close();

    > }

    >





    파일전송하는 부분이 위의 문장이 다 인지요? ^^;



    오픈하자 마자 바로 데이타를 전송하나요?



    TCP의 전송과정은 여러 단계를 거칩니다.



    만일, 파일송신은 잘 이루어 지나, 잘 될때와 안될때가 있다면,

    이 과정을 추가 해 보세요.



    먼저 OnConnected 이벤트가 발생되면 접속한 서버로

    파일을 날려도 되겠냐고 패킷을 던지세요.



    그리고, 응답이 오면 그때부터 파일을 전송하시면

    위의 문제가 해결되리라고 생각됩니다만..



    첨언드리면, 파일의 내용을 송수신시 "잘라서" 던지고 받으며

    패킷이 제대로 송수신 되는지 확인하는 과정을 거친다면

    더욱 훌륭한 프로그램이 되리라 생각합니다.



    접속시의 에러처리를 해 두신다면 좀더 안전한 프로그램이 될거 같구요.



    없는 실력에 주저리 말이 많았습니다.



    그럼~ 즐거운 프로그래밍 하시길~

  • Profile
    siro 2000.08.13 04:41
    감사합니다..

    이제야 소켓 연결을 해서 프로그램 하는 방법을 조금 알것 같아요. 히히 ^^;

    어느 정도 해결은 했는데 정확하게 될지는 모르겠지만... 구창민 님의..

    답변이 많이 도움이 되었습니다.



    감사합니다.

    • JENNY
    • 2000.08.03 02:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 허춘
      2000.08.03 09:10
      JENNY wrote: > 안녕하세요. 2번이나 Q & A를올렸는데, 아무도 답변을 안주시더군요. 요번엔 꼭 답변주세...
    • 김영해
      2000.08.03 03:10
      JENNY wrote: > 안녕하세요. 2번이나 Q & A를올렸는데, 아무도 답변을 안주시더군요. 요번엔 꼭 답변주세...
    • 허춘
      2000.08.03 09:09
      tommy wrote: > 안녕하세요 또 질문을 하게 되었습니다. 다름이 아니라 하나의 필드에 데이타가 정렬되어...
    • 지혀니
    • 2000.08.03 01:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 허춘
      2000.08.03 09:30
      지혀니 wrote: > 에러가 나엽.. > invalid use of keyword > token: , .... > Line Number1. > 뭐....
    • 김영해
      2000.08.03 02:02
      지혀니 wrote: > 에러가 나엽.. > invalid use of keyword > token: , .... > Line Number1. > 뭐....
    • 타락천사
      2000.08.03 01:24
      hanminet wrote: > 퀵에서 > 라벨처럼 인쇄하려고 합니다만 잘 되지 않네요... > 퀵에서 column을 주어...
    • hanminet
      2000.08.05 18:00
      고맙슴다... 조금이나마 기대를 햇건만 .... 어찌하오리까.... 안되는 것을.... 어찌되었든 고...
    • 김영해
      2000.08.03 02:04
      coolling wrote: > 델파이가 아니라 오라클의 질문입니다... > > 도스모드에서 익스포트한 파일을 도스...
    • coolling
      2000.08.04 01:45
      영해님... 임포트 시키려면 기존의 테이블을 다 지우라고 하셨는데 그냥 테이블을 덮어 쓰는게 아닌가요...
    • Mr.Q
    • 2000.08.03 01:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.08.03 02:47
      Mr.Q wrote: > ExtactIcon API사용시, undeclared identifier 에러납니다. > 어케해야하는지? 음..Mr...
    • Mr.Q
      2000.08.03 03:21
      구창민 wrote: > Mr.Q wrote: > > ExtactIcon API사용시, undeclared identifier 에러납니다. > > 어케...
    • 문진현
    • 2000.08.03 00:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2000.08.03 01:22
      문진현 wrote: > 안녕하세요... > MDI Application을 Activex폼을 이용하여 > 웹으로 포팅할려구 하는데...
    • 문진현
      2000.08.03 01:31
      답변 감사합니다.. 자료실에 소스가 있더군요.. 소스 보구 모르는거 있으면 다시 물어 볼께요..^^ 좋...
    • 이영근
    • 2000.08.02 23:54
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이영근
      2000.08.03 00:16
      소금 wrote: > 이영근 wrote: > > 제가 paradox table 에서 일자(field: date1)를 오늘 날자와 > > 비교...
    • 허춘
      2000.08.03 09:26
      이영근 wrote: > 소금 wrote: > > 이영근 wrote: > > > 제가 paradox table 에서 일자(field: date1)를 ...
    • 소금
      2000.08.03 00:39
      꼭 그런건 아닙니다. 아래와 같은 sql문도 가능합니다. select * from 테이블명 where '20000802' - ...
    • siro
    • 2000.08.02 23:40
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.08.03 02:49
      siro wrote: > 안녕하세요. > > 소켓을 이용해서 파일 전송을 하고 있습니다. > 그런데 이것을 이용...
    • siro
      2000.08.03 02:54
      구창민 wrote: > siro wrote: > > 안녕하세요. > > > > 소켓을 이용해서 파일 전송을 하고 있습니다. ...
    • 구창민
      2000.08.03 03:04
      siro wrote: > 구창민 wrote: > > siro wrote: > > > 안녕하세요. > > > > > > 소켓을 이용해서 파일...
    • siro
      2000.08.13 04:41
      감사합니다.. 이제야 소켓 연결을 해서 프로그램 하는 방법을 조금 알것 같아요. 히히 ^^; 어느 정도 해...
    • 송기원
    • 2000.08.02 22:13
    • 9 COMMENTS
    • /
    • 0 LIKES
    • 화랑
      2000.08.03 01:36
    • 송기원
      2000.08.03 01:47
    • 화랑
      2000.08.03 01:53
    • 송인표
      2000.08.05 03:42
    • 화랑
      2000.08.05 15:57
    • 송인표
      2000.08.06 02:25
    • 송기원
      2000.08.09 18:40
    • • • •
    • 희수기
    • 2000.08.02 21:54
    • 3 COMMENTS
    • /
    • 0 LIKES
    • Black}{ole
      2000.08.03 00:29
      희수기 wrote: > 저는 local db로 아폴로라는 것을 사용하고 있습니다... > > query를 사용해서 delete...
    • 최석기
      2000.08.03 00:20
      희수기 wrote: > 저는 local db로 아폴로라는 것을 사용하고 있습니다... > > query를 사용해서 delete...
    • 혀노
      2000.08.02 23:46
      아폴로가 뭔지 잘 모르겠지만요,,, 오라클 같은 경우는 삭제후 commit 을 시켜야 하거든요,,, 아마도 거...
    • Lim
    • 2000.08.02 21:51
    • 0 COMMENTS
    • /
    • 0 LIKES
    • HEIM
    • 2008.06.20 20:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 왕초보
    • 2000.08.02 21:46
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 소금
      2000.08.02 23:54
      왕초보 wrote: > procedure TfrmDisplay.ScrollAdjust; > begin > Units.x:=DEF_SCROLL_UNITS; > Units...
    • 왕초보
      2000.08.03 01:48
      소금 wrote: > 왕초보 wrote: > > procedure TfrmDisplay.ScrollAdjust; > > begin > > Units.x:=DEF_S...
    • 소금
      2000.08.03 18:48
      > procedure TfrmDisplay.ScrollAdjust; > begin > Units.x:=DEF_SCROLL_UNITS; > Units.y:=DEF_SCROLL_...
    • 송기원
      2000.08.02 22:18
      김종석 wrote: > 일반적으로 Key를 설정하면 자동으로 정렬이 되든되요.. > Key를 설정하지 않고 이름순...