서버쪽 소스는
else
begin
if sCommand = 'NUM' then
begin
lbProcess.Items.Append('Order Number is ' + sAction);
Onum := sAction;
if ErrorNum then
begin
//lbProcess.Items.Append(intToStr(frmOrderinfo.comp));
frmOrderinfo.FormCreate(sAction);
frmOrderinfo.mborderinfo.Clear;
lbProcess.Items.Append('파일을 생성하였습니다.');
end
else
begin
lbProcess.Items.Append('주문번호가 존재하지 않습니다.!!');
AThread.Connection.WriteLn('주문번호가 존재하지 않습니다.');<<----클라이언트로 메세지를 보낸다고 생각하는 부분.
//lbProcess.Items.Append(intToStr(frmOrderinfo.comp));
end;
AThread.Connection.Disconnect;
end
입니다. 위에서 화살표로 표시한 부분...으로 클라이언트쪽으로 보냅니다.
그리고
클라이언트쪽 소스는
procedure TfrmClient.btnInputOrderinfoClick(Sender: TObject);
begin
with IdTCPClient do
begin
if connected then disconnect;
host := edtSIPAddress.Text;
Port := 9099;// 이거 나중에 사용자가 선택해서 넣을 수 있도록 해야한다.
connect;
OrderNum := InputBox('Enter order Information', '주문번호를 입력하세요','');
if OrderNum = '' then ShowMessage('주문번호를 입력해주십시요!!')
else WriteLn('NUM:' + OrderNum);
lbCProcess.Items.Add(ReadLn);<<--- 서버의 메세지를 받는다고 생각하는 부분
DisConnect;
end;
end;
위의 화살표 친 부분으로 저기 위의 서버에서 보낸 문자열을 받아서 listbox에 보여주려고 하거든요. 근데 도저히 어떻게 해서 보여줘야 할 지 모르겠네요.
어떻게 해결을 해야 할지 좀 가르쳐주세요.
코딩한지 한달이나 되었는데 도저히 ... 너무 미숙한가봐요...
좀 귀찮으시더라도 좀 가르쳐주세요.
그리고 시간이 남으시면 제가 또 어떻게 무엇을 더 공부해야 할까도 말씀해주시면 좋겠구요.
그럼 부탁드리겠습니다.
첨부 : 너무 허접한 소스라서 .. 올리기 창피하지만 이해가 가지 않으면 좀 같이 봐주세요.
클라이언트에서 서버로 멧세지를 전송하면 이벤트가 발생하여
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
에서 처리를 해주면 되지만 클라이언트 같은경우에는 멧세지를 받는부분을
따로 만들어 줘야 합니다. 즉.. 쓰레드를 사용하셔야 해요..
(저도 초보라 다른방법은 잘 모르겠습니다.)
님의 클라이언트 소스를 보면 버튼을 누르면 서버에 접속하여 멧세지를
받게끔 하셨는데 이러면 안되요 ^^;;
서버에서 보내면 바로 받아야 하는데 만약 서버에서 어떤 멧세지를
보냈을 경우에 클라이언트에서 접속을 하고 있지 않다면 문제가 발생
하고 또한 버튼을 눌러서 서버로 연결한 다음 멧세지를 받아오려 하는데
서버에서는 아무것도 보내고 있지 않는 상황이니 문제가 있죠 ^^;;
델마당 가셔서 강좌팁란에 낙엽이란 별명으로 올려놓은 화일이 있습니다.
그거 참고하세요....