|
답변 고맙습니다. 그런데..
저게 bind()함수를 특정 아이피에 전달하는게 아니고
자신의 local computer 아이피를 지정한건데...
c언어에 socket 구조체에 아이피와 포트 정보를 넣듯이
컴포넌트 방식으로 정보를 넣은거 이거든요.
제가 틀린건지 모르겠네요.
아무튼 디버그시 recv 함수에서 바로 -1이 나와버리네요. T_T
컴포넌트는 모르신다고 했는데 그럼 다른 방법으론 어떻게 하시나요?
수야 님이 쓰신 글 :
: 안녕하세요. 수야랍니다.
:
: 거의 모든 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 혹시 다른 방법 아시는 분 없나요?
|