안녕하세요 좋은생각입니다.
정말 오랜만에 글을 올리는 것같아 어색하기 까지 하네용...~?
보아하니 소켓을 이용한 Client/Server프로그램을 짜시는 듯한데
만약 맞다면 클라이언트에서는 자기자신을 지정할 필요가 없습니다.
즉 자신의 포트와 서버의 포트를 맞추고 서버의 IP만 세트해주면
내부적으로 바이딩이라는 과정을 거처 자신의 IP를 세트한뒤 서버와
연결을 시도합니다.
델파이에 있는 TServerSocket과 TClientSocket을 컴포넌트의 예로 든다면
서버의경우는 먼저 Listen으로 클라이언트의 접속을 기다립니다.
procedure TForm1.Button1Click(Sender: TObject);
begin
if ServerSocket1.Active then ServerSocket1.Active := False;
with ServerSocket1 do begin
ServerSocket1.Port := Strtoint(edtPort.text);//클라이언트와 같은포트
Active := True;
end;
end;
클라이언트의 경우
procedure TForm1.Button14Click(Sender: TObject);
begin
ClientSocket1.Port := strToInt(Trim(edtPort.Text));//서버와 같은포트
ClientSocket1.Host := Trim(edtHostIp.Text);//서버주소
ClientSocket1.Active := True;//서버와 연결
end;
이게 전부입니다.
즉 클라이언트가 다른 어떤 PC에 있든 상관이 없고 포트와 서버의 주소만
클라이언트에서 신경을 쓰면 된다는 애기죠....
연결후는 서버와 정보를 그냥 주고 받으면 됩니다.
이부분은 생략하겠습니다.
좀더 자세한 제어를 하고 싶다면이 TServerSocket과 TClientSocket의 소스를
델파이에서 제공해주고 있으니 참고하시구요...
여담으로 소켓프로그래밍은 DB프로그래밍만큼이나 기본은 정형화되어 있다고
보시면 됩니다. 연결하고 끊고 하는 것은 다똑같다는 애기죠..다만 연결한후
어떻게 어떻게 응용하느냐가 다른 거죠..
도움이 되었으면 좋겠내요...의문사항이 있으면 연락을...
꿈을 가진 소년 /좋/은/생/각/.....
|