![](/img/trans.png)
[英]Using Cocoa / Objective-C, get currently connected network's security type in Mac OS X
[英]client side on MAC OS X gets empty responses (using BSD sockets and Cocoa's NSFileHandle)
我正在使用bsd套接字連接linux機器(充當服務器)和Mac機器(充當客戶端)。 由於Cocoa的改進,我以通常的方式設置bsd套接字,然后將其封裝在NSFileHandle對象上。 我正在使用該對象來發送和接收來自服務器的消息。
該協議如下:Linux從Mac收到一條消息,並立即將該消息回顯給Mac。
一切順利,直到我收到信息為止。 我的Mac收到的消息為空。
發送郵件時,這就是我的工作。
const char *toSend = [line cStringUsingEncoding:NSASCIIStringEncoding];
printf("message to send %s\n", toSend);
//[self writeData:[line dataUsingEncoding: encoding]];
[self writeData:[NSData dataWithBytes:toSend length:strlen(toSend)]];
[self readInBackgroundAndNotify];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:observer selector:@selector(process:) name:NSFileHandleReadCompletionNotification object:self];
如您所見,我在“觀察者”上設置了“過程”以處理服務器響應。 此方法執行以下操作。
NSFileHandle *fh = [notification object];
NSData *data = [fh availableData];
NSString *dataString = [[NSString alloc]
initWithData:data
encoding:NSASCIIStringEncoding];
printf("server says %s\n", [dataString cStringUsingEncoding:NSASCIIStringEncoding]);
[dataString release];
在控制台上,我得到:“服務器說”,僅此而已
在Linux方面,我正在打印得到的內容,然后將其發送回去之前,請檢查是否有東西。
我知道我可以在Mac上使用bsd常規套接字,但我真的很想這么做。
在調用readInBackgroundAndNotify之前不應該添加觀察者嗎? 您的消息可以在過程完成時被讀取和消失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.