このコードに問題があります。ご覧のとおり、内部スレッド recv を使用した起動により、プログラムは特定の保留中ブロックされますが、実行は継続され、タスクはスレッドをロックしたままになります。私のプログラムは引き続き recv データ ソケット new_sd を受信するため、無限ループ (コメント化されたコード) に入りました。問題は、recv の前に while (1) my program block を入力すると、正しく挿入されずに文字列が受信され、その後停止することです。私の recv が常に情報を待つようにするのを手伝ってくれる人はいますか? よろしくお願いします。
-(IBAction)チャット{
[NSThread detachNewThreadSelector:@selector(riceviDatiServer) toTarget:self withObject:nil];
}
-(void)riceviDatiServer{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
labelRicevuti.text = [[NSString alloc] initWithFormat:@"In attesa di ricevere i dati"];
char datiRicevuti[500];
int ricevuti;
//while(1){
ricevuti = recv(new_sd, &datiRicevuti, 500, 0);
labelRicevuti.text = [[NSString alloc] initWithFormat:@"%s", datiRicevuti];
//}
[pool release];
}