【发布时间】:2011-03-18 11:40:50
【问题描述】:
我使用 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");
[窗口 addSubview:viewController.view]; [窗口 makeKeyAndVisible]; 返回是; }
它永远不会继续发送数据,writeData 总是阻塞。 IP 192.168.0.30 是我 Mac 的 IP。正如您上面建议的那样,我现在只是使用了任何端口 12345。
但我真的不知道我必须在 Mac 上做什么才能接收??
如你所见,我实际上使用了syncsocket,然后它阻塞了。
我也尝试了 asyncSocket,然后我在 asyncsocket 类中得到消息:writeStream Can NOT Accept Bytes
也许是我没有正确设置 Mac,即我需要在 Mac 上运行什么应用程序来测试? 非常感谢!
【问题讨论】:
-
不知道SyncSocket是怎么实现的,但是Sync这个名字大概意思是同步的而不是异步的。
-
看这里code.google.com/p/cocoaasyncsocket/wiki/iPhone其他人是如何实现这个的......
-
链接...这正是我开始的地方以及我现在遇到问题的地方...
标签: iphone sockets tcp communication asyncsocket