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對象正在獲取客戶端發送的數據。
我們需要在客戶端寫入數據後立即讀取服務器端的數據,而不是退出應用程序。
任何人都可以幫我解決這個問題嗎?
爲什麼你瞬間試圖相同的IP /端口的一個新的連接,如果它失敗的第一時間?當然,如果失敗了,有些事情是錯誤的,當重試很快就會有新的嘗試幾乎肯定會失敗? – Jasarien 2010-09-15 16:38:38