socket server 는 NT Server 에서 visaul C++ 로 만들었 구요.
client는 delphi로 짜는데 통신이 안되어서요...
text를 먼저
sendbuf로 record를 전송합니다.
StrCopy(info.LoginName,PChar(LoginName));
StrCopy(info.LoginPassword,PChar(Pass));
info.IsNormal := 0;
FillChar(Buf,13,0);
StrCopy(buf,'O:LOGIND 42 ');
ClientSocket.Socket.SendBuf(buf,12);
ClientSocket.Socket.SendBuf(info,sizeof(TLoginInfo));
로 보냅니다.
그리고 서로 약속한 규칙데로 데이타를 받습니다.
그리고
FillChar(info,SizeOf(TFileListArgument),0);
info.TableTypeID := SmallInt(TreeView.Selected.SelectedIndex );
if Media.Text <> '' then
info.NewsID :=SmallInt(StrToInt(Media.GetCodeItems))
else
info.NewsID := 0 ;
DecodeDate(DateTimePicker.Time, Year, Month, Day);
info.NewsDateFrom[0] := SmallInt(Year);
info.NewsDateFrom[1] := SmallInt(Month);
info.NewsDateFrom[2] := SmallInt(Day);
info.NewsDateTo[0] := SmallInt(Year);
info.NewsDateTo[1] := SmallInt(Month);
info.NewsDateTo[2] := SmallInt(Day);
info.NewsPan :=SmallInt(nPan.Value);
info.NewsMeun := SmallInt(nMeun.Value);
if Buse.Text <> '' then
info.BuseID := SmallInt(StrToInt(Buse.GetCodeItems))
else
info.BuseID := 0;
if Gija_1.GetCodeItems <> '' then
info.GijaID := SmallInt(StrToInt(Gija_1.GetCodeItems))
else
info.GijaID := 0;
if CheckMoveInfo.Checked then
info.ShowMoveInfo := 1
else
info.ShowMoveInfo := 0;
if Team.Text <> '' then
info.TeamID := SmallInt( StrToInt(Team.GetCodeItems))
else
info.TeamID := 0;
Fillchar(buf,13,0);
StrCopy(buf,'O:FLLIST 28 ');
ClientSocket.Socket.SendBuf(buf,12);
ClientSocket.Socket.SendBuf(info,sizeof(TFileListArgument));
ReceiveType := 'Re_List';
waiting := True;
while waiting do
Application.ProcessMessages; -- > read event 가 일어나면 wating = False
읽는 function
이렇게 구현했습니다.
그런데 데이타가 한번은 가는데 두번째 부터 가지 않습니다.(read event도 물론 안 일어 나지요... 그런데 처음은 항상 되요. 그런데 그 다음부터는 가기도 하로 안 가기도 해요)
어쩔때는 안가고요...
제가 2주동안 해보려다가 끝내는 못했어요.
delphi 욕 엄청 하고 ....client 를 c로 한다는 군요.
2주동안 고생한 것도 억울하지만... delphi를 사람들이 엄청 욕하는것도 열받아요.
저희 회사는 거의 visual c를 쓰거든요.
무슨 해결방법 없습니까..??? 꼭 부탁 드려요.