Q&A

  • 조규춘님!! 또 질문 올립니다.
소켓통신 할때

ReceiveBuf, ReceiveText 를 이용해서 서버로부터 받은 데이타를 클라이언트에 뿌려주려고 합니다.



Socket.ReceiveText를 사용해서 받은 데이타를 확인해보면

54byte * N개 의 패킷이 한줄로 연속해서 내려옵니다.

내려온 Packet을 54byte씩 자를려고 하는데 어떻게 해야 될지 모르겠어요.



ReceiveBuf 를 이용해서 하면 된다고 하는데... 잘 모르겠거든요.

죄송하지만... 답변 부탁 드릴께요~~~



참... 또.. 아주 초보적인 질문 하나 더 하겠습니다.



받은 패킷을 (1번째 자리부터 4번째 자리)까지 분리할려고 하는데 값이 나오지 않네요



예를들면

aa : string[5];

aa := Copy(Socket.ReceiveText, 1, 4);

showmessage(aa);



하면 아무값도 나오지 않습니다.

어휴~~ 미치겠어요. 도와주세요~~~~



3  COMMENTS
  • Profile
    조규춘 2000.05.24 03:15
    강희숙 wrote:

    > 소켓통신 할때

    > ReceiveBuf, ReceiveText 를 이용해서 서버로부터 받은 데이타를 클라이언트에 뿌려주려고 합니다.

    >

    > Socket.ReceiveText를 사용해서 받은 데이타를 확인해보면

    > 54byte * N개 의 패킷이 한줄로 연속해서 내려옵니다.

    > 내려온 Packet을 54byte씩 자를려고 하는데 어떻게 해야 될지 모르겠어요.

    >

    > ReceiveBuf 를 이용해서 하면 된다고 하는데... 잘 모르겠거든요.

    > 죄송하지만... 답변 부탁 드릴께요~~~



    아래를 응용하셔서 한번 해보시길 바랍니다. (될지 안될지 .... 테스트는 안해봐서리)

    죄송합니다.

    만약 틀리면 죄송하구요 만약 맞이면 다행이구요~! -> 무책임한 말을... 윽...

    procedure TChatForm.ClientSocketRead(Sender: TObject;

    Socket: TCustomWinSocket);

    var

    Buf, Count, i : Integer;

    buffer : array [0..53] of byte;

    begin

    i := serversocket1.socket.ReceiveBuf(buffer,54);

    :

    :











    >

    > 참... 또.. 아주 초보적인 질문 하나 더 하겠습니다.

    >

    > 받은 패킷을 (1번째 자리부터 4번째 자리)까지 분리할려고 하는데 값이 나오지 않네요

    >

    > 예를들면

    > aa : string[5];

    > aa := Copy(Socket.ReceiveText, 1, 4);

    > showmessage(aa);

    >

    > 하면 아무값도 나오지 않습니다.

    > 어휴~~ 미치겠어요. 도와주세요~~~~

    >

    글씨요 이것을 쓰는 데 있어서 어딘가 이상한 곳이 있겠지유~!

    Socket.ReceiveText 이 값이 제대로 안오는 거 같지유~!

    Socket.ReceiveText = '' 이라면....

    aa := Copy(Socket.ReceiveText, 1, 4); aa 값엔 아무것도 안들어 가겠지요!



    한번 디버깅을 해보셔요(알지요? 체크할려는 부분에 F5 그리고 컴파일해서 ctrl+F7)



    그럼 어떻게 프로그램이 돌아가는지 알게 되겠지요~!



    도움이 잘 되었나 모르겠군요....





  • Profile
    강희숙 2000.05.24 05:50
    조규춘 wrote:

    > 강희숙 wrote:

    > > 소켓통신 할때

    > > ReceiveBuf, ReceiveText 를 이용해서 서버로부터 받은 데이타를 클라이언트에 뿌려주려고 합니다.

    > >

    > > Socket.ReceiveText를 사용해서 받은 데이타를 확인해보면

    > > 54byte * N개 의 패킷이 한줄로 연속해서 내려옵니다.

    > > 내려온 Packet을 54byte씩 자를려고 하는데 어떻게 해야 될지 모르겠어요.

    > >

    > > ReceiveBuf 를 이용해서 하면 된다고 하는데... 잘 모르겠거든요.

    > > 죄송하지만... 답변 부탁 드릴께요~~~

    >

    > 아래를 응용하셔서 한번 해보시길 바랍니다. (될지 안될지 .... 테스트는 안해봐서리)

    > 죄송합니다.

    > 만약 틀리면 죄송하구요 만약 맞이면 다행이구요~! -> 무책임한 말을... 윽...

    > procedure TChatForm.ClientSocketRead(Sender: TObject;

    > Socket: TCustomWinSocket);

    > var

    > Buf, Count, i : Integer;

    > buffer : array [0..53] of byte;

    > begin

    > i := serversocket1.socket.ReceiveBuf(buffer,54);

    > :

    > :

    >

    >

    >

    >

    >

    > >

    > > 참... 또.. 아주 초보적인 질문 하나 더 하겠습니다.

    > >

    > > 받은 패킷을 (1번째 자리부터 4번째 자리)까지 분리할려고 하는데 값이 나오지 않네요

    > >

    > > 예를들면

    > > aa : string[5];

    > > aa := Copy(Socket.ReceiveText, 1, 4);

    > > showmessage(aa);

    > >

    > > 하면 아무값도 나오지 않습니다.

    > > 어휴~~ 미치겠어요. 도와주세요~~~~

    > >

    > 글씨요 이것을 쓰는 데 있어서 어딘가 이상한 곳이 있겠지유~!

    > Socket.ReceiveText 이 값이 제대로 안오는 거 같지유~!

    > Socket.ReceiveText = '' 이라면....

    > aa := Copy(Socket.ReceiveText, 1, 4); aa 값엔 아무것도 안들어 가겠지요!

    >

    > 한번 디버깅을 해보셔요(알지요? 체크할려는 부분에 F5 그리고 컴파일해서 ctrl+F7)

    >

    > 그럼 어떻게 프로그램이 돌아가는지 알게 되겠지요~!

    >

    > 도움이 잘 되었나 모르겠군요....

    >

    >







    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    var

    Buf : array [0..53] of byte;

    i : integer;

    begin

    i := socket.ReceiveBuf(Buf, sizeof(Buf));

    ???????????????



    그 다음을 어떻게 읽어야 할지 모르겠어요. 어엉 ^^;;

    어떻게 해야 하나여?

    Buf 를 읽어야 할거 같은데... 떠오르는 데로 써봐도 모두 에러만...

    죄송. 다시 한번 부탁드릴께요.



  • Profile
    신승철 2000.05.24 06:01
    강희숙 wrote:

    > 조규춘 wrote:

    > > 강희숙 wrote:

    > > > 소켓통신 할때

    > > > ReceiveBuf, ReceiveText 를 이용해서 서버로부터 받은 데이타를 클라이언트에 뿌려주려고 합니다.

    > > >

    > > > Socket.ReceiveText를 사용해서 받은 데이타를 확인해보면

    > > > 54byte * N개 의 패킷이 한줄로 연속해서 내려옵니다.

    > > > 내려온 Packet을 54byte씩 자를려고 하는데 어떻게 해야 될지 모르겠어요.

    > > >

    > > > ReceiveBuf 를 이용해서 하면 된다고 하는데... 잘 모르겠거든요.

    > > > 죄송하지만... 답변 부탁 드릴께요~~~

    > >

    > > 아래를 응용하셔서 한번 해보시길 바랍니다. (될지 안될지 .... 테스트는 안해봐서리)

    > > 죄송합니다.

    > > 만약 틀리면 죄송하구요 만약 맞이면 다행이구요~! -> 무책임한 말을... 윽...

    > > procedure TChatForm.ClientSocketRead(Sender: TObject;

    > > Socket: TCustomWinSocket);

    > > var

    > > Buf, Count, i : Integer;

    > > buffer : array [0..53] of byte;

    > > begin

    > > i := serversocket1.socket.ReceiveBuf(buffer,54);

    > > :

    > > :

    > >

    > >

    > >

    > >

    > >

    > > >

    > > > 참... 또.. 아주 초보적인 질문 하나 더 하겠습니다.

    > > >

    > > > 받은 패킷을 (1번째 자리부터 4번째 자리)까지 분리할려고 하는데 값이 나오지 않네요

    > > >

    > > > 예를들면

    > > > aa : string[5];

    > > > aa := Copy(Socket.ReceiveText, 1, 4);

    > > > showmessage(aa);

    > > >

    > > > 하면 아무값도 나오지 않습니다.

    > > > 어휴~~ 미치겠어요. 도와주세요~~~~

    > > >

    > > 글씨요 이것을 쓰는 데 있어서 어딘가 이상한 곳이 있겠지유~!

    > > Socket.ReceiveText 이 값이 제대로 안오는 거 같지유~!

    > > Socket.ReceiveText = '' 이라면....

    > > aa := Copy(Socket.ReceiveText, 1, 4); aa 값엔 아무것도 안들어 가겠지요!

    > >

    > > 한번 디버깅을 해보셔요(알지요? 체크할려는 부분에 F5 그리고 컴파일해서 ctrl+F7)

    > >

    > > 그럼 어떻게 프로그램이 돌아가는지 알게 되겠지요~!

    > >

    > > 도움이 잘 되었나 모르겠군요....

    > >

    > >

    >

    >

    >

    > &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    > var

    > Buf : array [0..53] of byte;

    > i : integer;

    > begin

    > i := socket.ReceiveBuf(Buf, sizeof(Buf));

    > ???????????????

    >

    > 그 다음을 어떻게 읽어야 할지 모르겠어요. 어엉 ^^;;

    > 어떻게 해야 하나여?

    > Buf 를 읽어야 할거 같은데... 떠오르는 데로 써봐도 모두 에러만...

    > 죄송. 다시 한번 부탁드릴께요.

    >





    안녕하십니까... 악마. 신승철입니다..

    규춘님께서 바쁘실것같아서 대타로 -_-;

    ClientSocketRead 이런 이벤트가 있습니다.

    그곳에서 Socket.ReceiveText를 쓰면 String형태로 반환됩니다.

    그것을 받으시면 될것이고요.

    보낼때는 SendText쓰시면 됩니다. 단 cr값을 보내야하는데요.

    #13을 보내면 됩니다.