|
안녕하세요. 수야랍니다.
거의 모든 int형 반환 함수들은 실패시 -1을 리턴하게됩니다.
Recv() 함수는 실패시에는 -1을 리턴하며
성공시에는 받은 Size의 크기를 반환하게되며 이때는 일반적으로 ULONG나 u_long 타입으로 받게되죠
다른것으로 받아도 상관은 없습니다.
포트를 설정하고.
Bind()란 함수를 xxx.xxx.xxx.xxx란 IP로 전달하네요
이중간쯤에서 SOCKET struct를 정의하구서는
Listen()란 함수를 Active = true; 에서 하게되겠구요
Recv()를 하네요 조건절에서 왠만하면 -1보다 작냐고 설정하시는게 좋겠구요
Recv()함수 호출후에 바로 Recv error이란 멧시지가 뜨면 위에 뭔가 설정이 빠졌을겁니다.
확인해보시구
얼마 시간이 지난후에 에러가 뜬다면
클라이언트의 Port와 서버의 Port번호를 확인해보세요. 이것은 같아야합니다.
컴포넌트는 잘 쓸줄 몰라서요..
정확한 답변이 못되었네요.그냥 참고하세요
모라 님이 쓰신 글 :
: 인디에서 자기 컴의 특정 포트를 열고 수신되는 메시지를 기다리는 걸 짜는걸
: 다음과 같이 했습니다.
:
: char *buf
:
: IdTCPServer1->DefaultPort=4385;
: IdTCPServer1->Bindings->Add()->IP="xxx.xxx.xx.xx";
: IdTCPServer1->Active=true;
: if((IdTCPServer1->Bindings->Add()->Recv(buf,200,0))==-1)
: {
: ShowMessage("Recv error");
: }
:
: 컴파일은 에러가 안나던데..
:
: 디버그에서 언제나 recv 부분에서 -1값이 나오면서 에러가 뜨네요.
:
: 뭔가 잘못된건지 초보라 모르겠네요...도와주세요 ;-)
:
: p.s 혹시 다른 방법 아시는 분 없나요?
|