2010-09-15 58 views
0

我使用下面的代碼連接到服務器套接字:AsyncSocket寫數據的問題

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    asyncSocket = [[AsyncSocket alloc] initWithDelegate:self]; 

    NSError *err = nil; 
    //[asyncSocket connectToHost:@"192.168.0.200" onPort:8000 error:&err]; 
    if(![asyncSocket connectToHost:@"192.168.0.78" onPort:2055 error:&err]) 
    { 
     [asyncSocket connectToHost:@"192.168.0.78" onPort:2055 error:&err]; 
    } 
} 

然後在didConnectToHost代表,我寫一些文字:

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port 
{ 
    NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port); 

    for(int i=0;i<5;i++){ 
     NSString* str= [NSString stringWithFormat: @"Hello Server: %d",i]; 
     NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding]; 
     [sock writeData:data withTimeout:-1 tag:1]; 

    } 
} 

當我連接到插座,連接的消息顯示在服務器端控制檯上。在服務器端,正在使用streamReader從流中讀取數據。我們在服務器端使用TCPListener類(c#.Net)。但是,當我從客戶端套接字寫入數據並嘗試讀取客戶端發送的數據時,服務器上的streamReader對象正在獲取空數據。當我們退出客戶端應用程序時,服務器端的streamReader對象正在獲取客戶端發送的數據。

我們需要在客戶端寫入數據後立即讀取服務器端的數據,而不是退出應用程序。

任何人都可以幫我解決這個問題嗎?

+0

爲什麼你瞬間試圖相同的IP /端口的一個新的連接,如果它失敗的第一時間?當然,如果失敗了,有些事情是錯誤的,當重試很快就會有新的嘗試幾乎肯定會失敗? – Jasarien 2010-09-15 16:38:38

回答

1

你只需要完成與「\ n」 我知道字符串爲時已晚,所以希望它可以幫助別人