Я использую пример asyncsocket в качестве отправной точки, чтобы узнать больше о беспроводной сети на iPhone.
На Mac я запускаю образец сервера, открывающий порт 0. Это работает, поскольку я могу записывать данные с помощью тестового клиента, работающего на Mac.
На iPhone я думаю, что мне удалось подключиться, поскольку «потоки подключены» возвращает ДА.
Затем я хотел бы отправить данные с помощью syncsocket: (ОТРЕДАКТИРОВАННАЯ ВЕРСИЯ С ПОЛНЫМ КОДОМ)
import "InterfaceTestAppDelegate.h"
import "InterfaceTestViewController.h"
import "AsyncSocket.h"
import "SyncSocket.h"
@implementation InterfaceTestAppDelegate
@synthesize window;
@synthesize viewController;
(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)remoteHost port:(UInt16)remotePort
{
NSLog(@"Socket is connected!");
NSLog(@"Remote Address: %@:%hu", remoteHost, remotePort);
NSString *localHost = [sock localHost];
UInt16 localPort = [sock localPort];
NSLog(@"Local Address: %@:%hu", localHost, localPort);
}
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"application:didFinishLaunchingWithOptions:");
/*
asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];
NSError *err = nil;
if (![asyncSocket connectToHost: @"192.168.0.30" onPort: 1234 error: &err])
{
NSLog(@"Error connecting: %@", err);
}
NSData *data = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"trace 1");
[asyncSocket writeData:data withTimeout:10 tag:0];
NSLog(@"trace 2");
*/
syncSocket = [[SyncSocket alloc] initWithTimeout: 10];
syncSocket.nsLog = YES;
if (![syncSocket connectToHost: @"192.168.0.30" onPort: 12345])
{
NSLog(@"Error connecting syncSocket:");
}
NSData *data = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"syncSocket trace 1");
[syncSocket writeData:data];
NSLog(@"syncSocket trace 2");
[окно addSubview: viewController.view]; [окно makeKeyAndVisible]; вернуть ДА; }
Он никогда не продолжает отправлять данные, writeData всегда блокируется. IP 192.168.0.30 - это IP моего Mac. Я просто использовал любой порт 12345, как вы предложили выше.
Но я действительно не знаю, что мне нужно сделать на Mac, чтобы получить ??
Как видите, я использую syncsocket, а затем он блокируется.
Я также пробовал asyncSocket, затем я получаю сообщение в классе asyncsocket: writeStream Can NOT Accept Bytes
Может быть, я неправильно настроил Mac, т.е. какое приложение мне нужно запустить на Mac для тестирования? Большое спасибо!