我使用 asyncsocket 示例作为起点来了解有关 iPhone 上的 wlan 通信的更多信息。
在 Mac 上,我启动了一个打开端口 0 的示例服务器。这很有效,因为我可以使用在 mac 上运行的测试客户端写入数据。
在 iPhone 上,我想我设法连接了,因为“连接的流”返回 YES。
然后我想用同步套接字发送数据:(带有完整代码的编辑版本)
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");
[窗口添加子视图:viewController.view];[窗口 makeKeyAndVisible]; 返回是;}
它永远不会继续发送数据,writeData 总是阻塞。IP 192.168.0.30 是我 Mac 的 IP。正如您上面建议的那样,我现在只是使用了任何端口 12345。
但我真的不知道我必须在 Mac 上做什么才能接收?
如您所见,我实际上使用了syncsocket,然后它阻塞了。
我也尝试了 asyncSocket,然后我在 asyncsocket 类中得到消息:writeStream Can NOT Accept Bytes
也许是我没有正确设置Mac,即我需要在Mac上运行什么应用程序来测试?多谢!