2011-09-08 28 views
2

我有一個小的MAC OS X應用程序應該發送一個UDP數據報到服務器。可可asyncudpsockets不發送字節流

我想用可可asyncudpsockets(http://code.google.com/p/cocoaasyncsocket/)要做到這一點,但我有我稱之爲「送出數據」的方法,但什麼也沒有發生問題。

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

stream是一個字節*包含數據報主機是一個ip地址作爲NSString。

任何人都可以幫助我嗎?

+1

請問方法返回YES或NO?你是否設置了委託方法? – JWWalker

+0

返回YES,是的,我設置了委託方法,它們都沒有(發送,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