2011-09-08 4 views
2

UDP 데이터 그램을 서버에 보내야하는 약간의 MAC OS X 응용 프로그램이 있습니다.코코아 asyncudpsockets는 bytestream을 보내지 않습니다.

코코아 asyncudpsockets (http://code.google.com/p/cocoaasyncsocket/)을 사용하여이 작업을 수행하려고하지만 "sendData"메서드를 호출했지만 아무 일도 발생하지 않는 문제가 있습니다.

[socket sendData:[NSData dataWithBytes:stream length:length] 
      toHost:host 
      port:(uint16)port 
    withTimeout:5 
      tag:1]; 

스트림은 바이트입니다 * 데이터 그램 호스트는 NSString과 같은 IP 주소입니다.

아무도 도와 줄 수 있습니까?

+1

은 NO YES 또는 메서드 반환합니까 도움이 될 것입니다 희망? 위임 방법을 설정 했습니까? – JWWalker

+0

예, 그렇습니다. 위임 메소드를 설정했지만 그 중 아무 것도 (sent, didntsent) 실행되지 않습니다. – mabstrei

답변

1

위임자를 올바르게 설정 했습니까? 그런 다음

[socket setDelegate:self]; 

:

위임 방법 다음
[socket connectToHost:(NSString *)host 
       onPort:(UInt16)port 
      withTimeout:(NSTimeInterval)timeout 
       error:(NSError **)errPtr]; 

:

- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port 
{ 
    [sock writeData:[NSData dataWithBytes:stream length:length] withTimeout:TIMEOUT_NONE tag:TAG_HEADER]; 
} 

그것은 ;-)

+0

이 샘플 코드는 오류를 처리하지 않으며 소프트웨어 릴리스에 대해 개선해야합니다;) – nverinaud

+0

대리인을 설정하려면 소켓 [[AsyncUdpSocket alloc] initWithDelegate : self]를 수행했습니다. 꽤 같아야합니다 ... 소켓을 연결하지 않았기 때문에 (원인은 udp가 일반적으로 연결되어 있지 않습니다) sendData를 사용했습니다 ... udp 소켓에도 연결해야합니까? – mabstrei

+0

시도해 볼 수도 있습니다. 도움이 될 수도 있습니다. UDP는 정보가 성공적으로 수신되는 것을 신경 쓰지 않는 프로토콜입니다. 하지만 TCP와 같은 연결 프로토콜입니다. – nverinaud

관련 문제