BROADCAST로 SERVER 장비 찾기
VC쪽에도 올린다고 아래의 내용을 추가한 것입니다. Builder를 자랑스럽게 여기는
분들 화내지 마시길 바랍니다. 저도 Builder 엄청 좋아합니다. ㅎㅎㅎ
아래의 소스는 Borland C++Builder로 되어 있습니다. 지금 옮김 회사도
VC++를 사용하내요.... ㅋㅋㅋ 저렇게 노가다를 해야할까?
제가 TEST해 보았는데... C++Builder도 아주 안정적입니다. ㅎㅎㅎㅎ
어떻게 보면 BUG를 더 많이 줄일 수 있고 일도 몇배로 빨리 끝낼 수 있습니다.
핵심부분만 VC++로 인터페이스나... DB나 이런 것들 C++Builder로 해 보세요...
아니면 다 Builder로 하셔도 되고... 현재 그래프 그리는 것 Builder로 만들어 놓았는데...
ㅎㅎㅎ VC로 한것과 조금도 속도 차이가 없습니다. 그리는 것을 API로 헀기 때문에....
저는 지금도 VC로 해라고 하지만 TEST할 때는 Builder를 사용합니다. 아마 이 TEST 부분만
만드는 것도 시간을 엄청 줄일 수 있습니다. 여러 툴들 썪어서 사용해 보시길....
현재 LINUX Embedded 쪽의 서버의 구상 중인데 저런 장치가 많다.
IP를 일일이 적어 놓고 할 때마다 입력해야 할까?
그냥 CLIENT(PC) 프로그램을 run 하면 LAN으로 연결되어 있는 장치들이
IP를 다 보내 주면 LIST 목록에 나타나게 하고 그 중 하나를 그릭하면
하면 바로 TCP로 접속해서 작업을 하도록.... 이게 좋을 것 같아.... 물론
대부분의 장비들이 이렇게 동작하고 있네요... ㅋㅋㅋㅋ
어떻게 할까? 고민 반나절 하다 BROADCAST로 TEST하니까? 잘 되네요....
혹 필요한 분들 반나절 시간을 아끼라고 올려봅니다... 아시는 분은...
그냥 지나 가시고....
//물론 서버쪽은 리눅스에서 돌아가도록 GCC로 만들어야 하지요.... ㅋㅋㅋㅋ
(서버쪽) 은 PORT 번호만 입력하면 되고
void __fastcall TForm1::IdUDPServer1UDPRead(TObject *Sender,
TStream *AData, TIdSocketHandle *ABinding)
{
char str[100];
int nnn;
nnn = AData->Size;
AnsiString Buff, asIP, asPORT;
asIP = ABinding->PeerIP;
asPORT = ABinding->Port;
AData->ReadBuffer( str, nnn );
str[nnn] = 0x00;
Buff = asIP + ", " + asPORT + ", " + str;
Memo1->Lines->Add( Buff ); //그냥 DEBUG용입니다.
//여기서 나도 이 시스템이라는 메세지를 Client에 보내면 되겠지요.
}
//---------------------------------------------------------------------------
(CLIENT) 는 아래와 같이 하되 PORT 번호도 주어야 합니다.
void __fastcall TForm1::btnSendClick(TObject *Sender)
{
char str[100];
AnsiString asStr;
int i;
//Lan에 물려져 있는 모든 장치를 찾기 위해서
i=1;
while( i<224 ) //PC의 네트웍 IP 지정하는 곳에서 맨 앞자리 IP를 지정해 보면 1~223 까지 입력하라고 나옵니다.
{
if( i==127 ) { i++; continue; } // 127.0.0.0 is local IP
asStr = IntToStr( i ) + ".255.255.255";
IdUDPClient1->Active = false;
IdUDPClient1->Host = asStr;
IdUDPClient1->Active = true;
wsprintf( str, "Request RX-100%c%c", 0x0D, 0x0A ); //Client에서 이렇게 보내면 서버에서
IdUDPClient1->SendBuffer( str, strlen(str) ); //이 문자들을 확인하고 자기 장치이면 신호를 보내면 되겠지요
i++;
}
}
이만.... 현재 객지 생활 중... 부산에서 취직이 되지 않아 마산으로 옮겼습니다.... 우리 애들 많이 보고 싶다.
1 주일에 한번 보는데.... 기러기 아빠들.... 힘내세요.... "아빠 힘내세요... 우리가 있잖나요...~~~"
|
while ... 이후 별 필요하지 않는 것 같습니다.
그냥 PORT 번호를 255.255.255.255로 한번만 하시면 됩니다.
제가 잘못 생각을 했습니다. ㅋㅋㅋㅋ 죄송