2012-12-24 91 views
1

我只是想immitate下面的PHP在客觀C或C,目標C中的TCP/IP?

<?php 
$host="192.168.1.4"; 
$port = 1000; 
$message="Hi"; 

// open a client connection 

$fp = fsockopen ($host, $port, $errno, $errstr); 

if (!$fp){ 

$result = "Error: could not open socket connection"; 

} 
else{ 

fputs ($fp, $message); 

fputs ($fp, "END"); 

fclose ($fp); 

} 

?> 

我已經實現了目標C以下,但還不是那麼可靠,快速,僅第一條消息被傳遞,我需要重新連接第二個數據(我試過https://github.com/robbiehanson/CocoaAsyncSocket,但反映了與下面的代碼相同的結果)。我需要打開數據 - >發送數據 - >關閉連接(必須是即時沒有任何延遲)

NSString *ipaddress =[NSString stringWithFormat:@"192.168.1.4"]; 

     CFReadStreamRef readStream; 
     CFWriteStreamRef writeStream; 
     CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)ipaddress, 1000, &readStream, &writeStream); 

     inputStream = (NSInputStream *)readStream; 
     outputStream = (NSOutputStream *)writeStream; 
     [inputStream setDelegate:self]; 
     [outputStream setDelegate:self]; 
     [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
     [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

     [inputStream open]; 
     [outputStream open]; 
+0

它可能是操作系統特定的。閱讀http://advancedlinuxprogramming.com/for Linux。 –

回答

3

我強烈建議使用網絡通信的更高層次的框架。對於我的大部分項目,我一直在使用CocoaAsyncSocket--比直接使用iOS的網絡API要少得多。

+0

我也試過CocoaAsyncSocket但發送我的第一個數據連接後斷開連接,我不得不重新創建連接發送我的第三個左右......這需要更多的時間......但我包含的PHP是無縫快速... – Satheesh

+0

那麼,在這種情況下,請檢查連接關閉的原因。可能是你過早釋放物體?無論如何,這超出了你原來的問題的範圍。 – BastiBen

+0

我得到了問題,它從服務器端收到客戶端的數據後關閉連接。我設法改變它,現在它的工作正常。謝謝@badcat – Satheesh