C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[39998] Re:Re:indy udp 다시 질문드립니다~~꼭좀 알려주세요~~ㅠ.ㅠ
빵샹시 [bread32] 2825 읽음    2005-04-29 17:50
yun 님 답변 감사합니다~~
근데..알려주신게 델파이라그런지..제가 이해를 잘 못한거 같거든여...
일단...알려주신거...나름대로 적용을 해봤거든요...

UDPclient소켓에서 보낼때...
UDP->Host = ClientAddress;
UDP->SendBuffer( &UDP_Packet, sizeof(UDP_packet) );
UDP->ReceiveString(1000);
.
.
.
UDPServer 소켓에서 받을때..UDPServerRead이벤트에서..
AData->Read( &UDP_ClientPacket, ReceiveBytes );
해서 받아 읽은 다음...뭐 이것저것 처리..

다시 확인했다고 응답을 날려줄때..
ABinding->SendTo(ABinding->PeerIP, ABinding->PeerPort, &UDP_Packet, sizeof(UDP_packet));

근데...컴파일하고...실행하면 에러가 나던데여...
Project Exam.exe raised exception class EldSocketError with message 'Socket Error #10054
Connection reset by peer.'  하고 에러가 나거든요..

UDP->ReceiveString(1000);      이부분을 주석처리하면 에러가 안나고요...
주석처리 안하면 괄호안에 시간만큼 딜레이가 생긴 후 에러가 생기거든여..

워낙 제가 허접한지라..자세한 설명 부탁드립니다~~


yun 님이 쓰신 글 :
: 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
: : 어찌해야 할찌...꼭 알려주세요!! ㅠ.ㅠ

+ -

관련 글 리스트
39964 indy udp 다시 질문드립니다~~꼭좀 알려주세요~~ㅠ.ㅠ 빵샹시 892 2005/04/28
39990     Re:indy udp 다시 질문드립니다~~꼭좀 알려주세요~~ㅠ.ㅠ yun 1448 2005/04/29
39998         Re:Re:indy udp 다시 질문드립니다~~꼭좀 알려주세요~~ㅠ.ㅠ 빵샹시 2825 2005/04/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.