|
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
DataStringStream : TStringStream;
ReStr : String;
begin
DataStringStream := TStringStream.Create('');
try
DataStringStream.CopyFrom(AData, AData.Size);
ReStr := DataStringStream.DataString;
if Restr <> '' then
begin
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,ReStr[1], Length(ReStr)); //온 데이타 그대로 전송
end;
finally
DataStringStream.Free;
end;
end;
이렇게 한번 해보시겠어요?? 이미 이렇게 해보셨었나요..?
UDPClientsocket 쪽은 데이타 보내고 rxStr := UDPClientsocket .ReceiveString(1000); 이런식으로
해놓으시구요...
UDPserversocket쪽이 공인 아이피여야 하고요...
빵샹시 님이 쓰신 글 :
: 저번에 질문 올렸었는데 유영인님께서 답변 해주셨는데요...워낙 실력이 딸려서..잘 이해가 안가서요....
: 인디 udp서버/클라이언트를 써서 간단히 패킷 구성해서...서로 통신하게 하려 하는데용..
: 실제 아이피끼리..그러니까 공인아이피끼리는 잘 되거든요...
: 근데...보내는 쪽이 내부 네트웍 안에 있는 가상아이피면 보내는걸 다른쪽 실제 아이피에서 받긴 하는데 거기에 대해서 응답하려고 다시 가상 아이피쪽으로 패킷 보내면 그게 가상쪽에서 못받더라고요...
: 쉽고 간단한 거라 하던데...어찌 해야 할지..ㅠ.ㅠ
:
: 보내는 쪽에선
: UDP->Host = ClientAddress;
: UDP->SendBuffer( &UDP_Packet, sizeof(UDP_packet) );
: 하고 보내고...
:
: 받는쪽에선..UDPServerRead이벤트에서..
: AData->Read( &UDP_ClientPacket, ReceiveBytes );
: 해서 받아 읽은 다음...뭐 이것저것 처리..
:
: 다시 확인했다고 응답을 날려줄때..
: UDP->Host = ReceiveAddress;
: UDP->SendBuffer( &UDP_Packet, sizeof(UDP_recievePacket) );
: 하거덩여...
:
: 모가 중간에 빠진건지...이번주 안에는 해결해야 할꺼인데..OTL
: 어찌해야 할찌...꼭 알려주세요!! ㅠ.ㅠ
|