Q&A

  • connetion과 active의 차이(socket에 대하여)
socket이 궁금해서 질문을 올림니다

내부 네트워크로 컴퓨터들이 연결되어 있고 각각의 컴퓨터는

IP를 192.168.0.1~~192.168.0.20으로 IP가 설정 되어 있다고

가정하면은 하나의 프로그램에 서버,클라이언트 소켓을 놓고

클라이언트 소켓에서 특정 이벤트에서 서버 소켓에 메시지를

보내고 싶은데 서버소켓은 폼이 create될때 활성이 되어있구요

클라이언트 소켓은 특정이벤트에서 address를 192.168.0.1~~

192.168.0.20으로 변화 시키면서 메시지를 쏘는데 port는

6000번으로 고정시켜 놓구요 주소만 변경시켰습니다. acitve를

true로 시키고 바로 메시지를 보내면 메시지가 안보내져서요.



소스는 대강

for i:=1 to 20 do

begin

Client.Active:=false;

Host:='192.168.0.'+IntToStr(i);

Client.Address:=Host;

Client.Port:=6000;

Client.Active:=true;

// showmessage(host);

// showmessage(hostcon);

HostCon:='내가보냈서요';

Client.Socket.SendText(Format('%-8s : %s',['나나나 :',HostCon]));

next;

end;

이렇습니다. 그래서 위에 주석문 보이시죠. 이 주석을 풀고 실행하면은

서버 소켓에 메시지가 전달됩니다. 단 showmessage로 주소와 내용이 계속

나와서 그렇지....

그래서 client 소켓이 연결되고 나서 active되기 전에 메시지를 보내는것

같은데 client 소켓이 active 되고나서 sendText로 내용을 전달 했으면

좋겠어요.. client 소켓의 onConnect이벤트에서도 해봤는데 결과가 똑같아요.

다른 방법이 있나요.... 있으면 ㅠ.ㅠ 계속 검색을 하고 있는데 뾰족한 수가

생각이 나질 않는군요 초초초보가.....



1  COMMENTS
  • Profile
    홍성락 2001.08.02 20:38
    mamma wrote:

    > socket이 궁금해서 질문을 올림니다

    > 내부 네트워크로 컴퓨터들이 연결되어 있고 각각의 컴퓨터는

    > IP를 192.168.0.1~~192.168.0.20으로 IP가 설정 되어 있다고

    > 가정하면은 하나의 프로그램에 서버,클라이언트 소켓을 놓고

    > 클라이언트 소켓에서 특정 이벤트에서 서버 소켓에 메시지를

    > 보내고 싶은데 서버소켓은 폼이 create될때 활성이 되어있구요

    > 클라이언트 소켓은 특정이벤트에서 address를 192.168.0.1~~

    > 192.168.0.20으로 변화 시키면서 메시지를 쏘는데 port는

    > 6000번으로 고정시켜 놓구요 주소만 변경시켰습니다. acitve를

    > true로 시키고 바로 메시지를 보내면 메시지가 안보내져서요.

    >

    > 소스는 대강

    > for i:=1 to 20 do

    > begin

    > Client.Active:=false;

    > Host:='192.168.0.'+IntToStr(i);

    > Client.Address:=Host;

    > Client.Port:=6000;

    > Client.Active:=true;

    > // showmessage(host);

    > // showmessage(hostcon);

    > HostCon:='내가보냈서요';

    > Client.Socket.SendText(Format('%-8s : %s',['나나나 :',HostCon]));

    > next;

    > end;

    > 이렇습니다. 그래서 위에 주석문 보이시죠. 이 주석을 풀고 실행하면은

    > 서버 소켓에 메시지가 전달됩니다. 단 showmessage로 주소와 내용이 계속

    > 나와서 그렇지....

    > 그래서 client 소켓이 연결되고 나서 active되기 전에 메시지를 보내는것

    > 같은데 client 소켓이 active 되고나서 sendText로 내용을 전달 했으면

    > 좋겠어요.. client 소켓의 onConnect이벤트에서도 해봤는데 결과가 똑같아요.

    > 다른 방법이 있나요.... 있으면 ㅠ.ㅠ 계속 검색을 하고 있는데 뾰족한 수가

    > 생각이 나질 않는군요 초초초보가.....

    >////////////////////////////////////////////////////////////////////////

    소스에서 미리 Client컴포넌트의 Active를 false로하고요

    Close를 나중에 사용하고요(for문후에도 닫아놓는것이 좋습니다)

    next는 없에보세요.



    for i:=1 to 20 do

    begin

    Host:='192.168.0.'+IntToStr(i);

    Client.Address:=Host;

    Client.Port:=6000;

    Client.Open;

    HostCon:='내가보냈서요';

    Client.Socket.SendText(Format('%-8s : %s',['나나나 :',HostCon]));

    Client.Close;

    end;