소켓 프로그램 개발해 보셧어요?
안녕하세요 하얀까마귀입니다.
도움을 좀 주세요..
제가 지금 MIDAS를 이용해서 프로그램을 짤려고 하거든요...
(Midas 전혀 모름... iti강좌를 읽고 책조금보고(책도 거의 내용이 없어요)
이제 예제 몇개 만들어본 수준임)
음.. 그런데.. 테스트를 해보니까
단독 컴퓨터나 lan에서는 작동을 하던데... TCP/Ip로 연결해서
할때는 어떤식으로 하죠?? 잘 안되는것 같던데...
그리고 모뎀도 고려를 해야 하거든요.
/-----------------------------------
그래서 제가 생각한 방법이 소켓을 이용해서 데이타 전송을 받고
그걸 ClientDataSet으로 읽어들여서 보구요 변경이나 저장등의
기능또한 소켓으로 전송해서 구현할려고 하거든요???
이거 너무 일이 많을것 같죠????
테이블이 한두개도 아니고.. 각각 전부 소켓으로 인터페이스를 구현할
생각을 하니 막막하네요..
그래서 여기저기 들쑤시면서 괜찮은 방법을 찾고 있어요...
- 환경을 설명드리면.
개발할려는 프로그램은 클라이언트에는 BDE나 DB를 설치하지 않고
그냥 프로그램만 설치될겁니다. 그렇게해서 실시간으로 데이타의 조회나
저장, 수정또한 가능해야 하거든요? 물론 모뎀접속이나 전용선등으로
TCP/IP로 물리겠죠...
물론 서버에는 DB가 설치되어 있고... 꼭 소켓이 아니어도 되고 그냥 보통 어떤
식으로 구현하는지도 몰라서..
그래서 클라이언트에서 소켓으로 조건등을 전송하면 서버 프로그램에서
DB를 검색해서 결과를 소켓으로 전송하는 방식으로 테스트를 했는데..
작동은 잘하는데 일이 너무 많아서.. 흑흑...
이것 밖에는 없는지요...
아!! 그리고 Midas Page에 있는 SocketConnection 하고
ServerSocket 과 ClientSocket과는 어떻게 다르죠????
전 ClientSocket으로 했거든요...
아시는분 있으시면 가르쳐 주세요..
멜루 보내신 내용은 잘 받았습니다.
거두절미하구 간단하게 설명 올리겠습니다.
//////////////////////////////////////////
// Server
//////////////////////////////////////////
Remote Data Module에 올려놓는 컴포넌트들입니다.
컴포넌트 이름으로 쓰기루 하져.
괄호안에 적어준 갯수는 컴포넌트 갯수들입니당.
물론 실행시에 속성들을 변경시켜가면서 쓰면 몇 개 안 가지구두 쓸 수 있지만...
- Database (1개)
AliasName: 디비 서버랑 연결시키면 되져.
DatabaseName: 다른 컴포넌트에서 이용할 이름
Name: 컴포넌트 자체 이름
- Session (1개)
Active: True
AutoSessionName: False
- Query (수십개 --;)
DatabaseName: Database컴포넌트의 DatabaseName속성(콤보박스에 있을겁니다)
SQL: 질의문
** Export를 반드시 시켜줘야겠져.
- 그 담에 서버를 한 번 실행시켜주면 클래스가 레지스트리루 날라갑니당.
레지스트리에서 Borland DataBroker로 찾아보심 등록된 클래스들을 보실 수 있으실 겁니다. 맘에 안드는 클래스들은 거기서 없애줘두 상관없죠.
- Query말구두 Table이나 StoredProc두 쓸 수 있져.
Table은 웬지 맘에 안 들구 -.-
StoredProc은 디비안에 심어놓은 프로시져를 불러다 쓰는 겁니당.
- 위의 세 컴포넌트들이랑 연결해서 TProvider를 쓸 수 있는데요.
요놈은 Data Broker를 이용할 때 써먹기두 하구여. 없어두 되져. --;
- 질의문으루 부족한 것들은 함수나 프로시져를 만들어서 써야겠져.
이것들은 Type Library를 통해서 작성해 주어야 함당. (View메뉴에 있져)
//////////////////////////////////////////
// Client
//////////////////////////////////////////
간단하게 DBGrid에다 데이타를 연결해보져.
배치할 컴포넌트들은여.
역쉬 이름으루 하겠습니당.
갯수두 서버랑 같은 의미임당. 역쉬 몇 개 안 가지구두...퍽... -.*
- SocketConnection (딱 1개)
Address: 여기다가 서버 IP를 적어주면 됩니당
ServerName: IP를 입력한 담에 콤보박스에 Remote Date Module을 만들때 적어주신
이름을 입력하세여. 거기에 레지스트리에 등록된 서버이름들이 다 뜨겠져.
- ClientDataSet (받아올 Query만큼이나 -.-)
RemoteServer: SocketConnection 컴포넌트 이름을 넣어줍니다
이 자리에 ~Connection으루 끝나는 컴포넌트들이 들어가져.
ProviderName: 서버에서 Export시켜준 Query를 사용하져.
- DataSource (ClientDataSet보담은 적겠져. 룩업으로 쓰는 CDS따위두 있을 테니깐)
DataSet: ClientDataSet컴포넌트 이름
- DBGrid (맘대루 쓰시져. ^^)
DataSource: DataSource컴포넌트 이름
//////////////////////////////////////////
- 이제 ClientDataSet컴포넌트의 Active속성을 True로 바꾸시믄
서버두 뜨구 데이타두 보이겠져.
- 굳이 ClientSocket을 쓸 필요가 있나 싶네여.
디비가 얼마나 큰 건지는 모르겠지만 속성들 잘 조절하시믄 이 정도로도 될 듯 한데여.
ClientSocket은 TCustomSocket에서 가져온 소켓을 이용하는 컴포넌트구여.
SocketConnetion은 이런 다중 계층에서 쓸라구 저멀리 TCustomRemoteServer에서 태어난 종자가 아예 다른 놈이걸랑여.
구럼 허접 프로그래머 폴룻은 이만~~~~~
즐프하세엽. ^^;