Я использую пример asyncsocket в качестве отправной точки, чтобы узнать больше о связи wlan на iPhone.
На Mac я запускаю пример сервера, открывающего порт 0. Это работает, так как я могу записывать данные с помощью тестаклиент, работающий на Mac.
На iPhone, мне кажется, мне удалось подключиться, так как «streams connected» возвращает YES.
Затем я хотел бы отправить данные с помощью синхронизирующего гнезда: (РЕДАКТИРОВАННАЯ ВЕРСИЯ СПОЛНЫЙ КОД)
</p>
<p>import "InterfaceTestAppDelegate.h"
import "InterfaceTestViewController.h"
import "AsyncSocket.h"
import "SyncSocket.h"</p>
<p>@implementation InterfaceTestAppDelegate</p>
<p>@synthesize window;
@synthesize viewController;</p>
<ul>
<li><p>(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)remoteHost port:(UInt16)remotePort
{
NSLog(@"Socket is connected!");</p>
<p>NSLog(@"Remote Address: %@:%hu", remoteHost, remotePort);</p>
<p>NSString *localHost = [sock localHost];
UInt16 localPort = [sock localPort];</p>
<p>NSLog(@"Local Address: %@:%hu", localHost, localPort);
}</p></li>
<li><p>(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"application:didFinishLaunchingWithOptions:");</p>
<p>/*
asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];</p>
<pre><code> 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 (@ "Ошибка подключения syncSocket:");} NSData * data = [@ "testxyz" dataUsingEncoding: NSUTF8StringEncoding];
NSLog (@ "syncSocket trace 1");[syncSocket writeData: data];NSLog (@ "syncSocket trace 2");
[окно addSubview: viewController.view];[window makeKeyAndVisible];вернуть ДА;}
Он никогда не продолжает отправлять данные, writeData всегда блокируется.IP 192.168.0.30 - это IP моего Mac.Я просто использовал любой порт 12345, как вы предложили выше.
Но я действительно не знаю, что мне нужно делать на Mac, чтобы получить ??
Как вы можете видеть, я фактически использую syncsocket, тогда он блокируется.
Я также попробовал asyncSocket, затем я получаю сообщение в классе asyncsocket: writeStream НЕ МОЖЕТ принимать байты
Возможно, дело в том, что я неправильно настраиваю Mac, то есть какое приложение мне нужно запустить на Mac, чтобытестовое задание?Большое спасибо!