안녕하세요.
델파이에 입문한지 얼마안돼는 하룻강아지입니다..ㅜ.ㅜ
서버소켓은 한개구요
한개의 폼에서 클라이언트소켓은 동적생성하여
레코드에담아 Tlist에 기록해놓구요
동적생성해주면서 설정해주는것들은
Active,Address,ClientType,Host,Port,Service,Tag
위와같은 프로퍼티를 설정해주면서 루핑을돕니다
이제 이레코드를 쓸일이있을때
Tlist루핑을 돌면서 레코드안에있는 Client 소켓 핸들을 담아놓은걸
Active := True 를 해줌과동시에 패킷을 날리는데요.
Socket.SendBuf(v,Sizeof(TV));
서버에 연결은되어 서버측 OnAccept 와 OnConnect 이벤트는
발생을 합니다만 그럼 정상적으로 연결이되었다는 소리인데
날린패킷은 인식을 못하는군요.
즉 서버측 OnAccept 와 OnConnect 이벤트는 발생하지만
OnClientRead 이벤트는 발생하지않습니다.
그래서 동적생성한게 아닌 아무개 클라이언트 콤포넌트를 폼에박아서
연결을해보고 패킷을 날려보면 서버소켓에선 정상적으로 연결과동시에
날린패킷도 인식을 합니다
어찌된영문일까요...ㅜ.ㅜ
아시는분은 하루강아지에게 조언을 좀 부탁드립니다.
제가 보기에는 ClientSocket이 ServerSocket에 Connect 되기 전에 Send가 되었을 가능성이 있을것 같군요. 일단 정확하게 증세를 파악하려면 Socket.SendBuf 함수를 호출할 때 리턴값을 받아서 Packet이 제대로 전달되었는지에 대한 여부 부터 살펴 보시는 것이 좋을듯 싶네요.
그리고, 정확하게 하려면, ClientSocket의 OnConnect Event가 발생하였을 때 SendBuf를 하심이 어떠실까 합니다.
그럼 즐프하세요.