好的。所以我已经尝试将设备p2p与流连接了一周。仍然没有结果,我变得疯狂和绝望。请不要将我发送到Ray Wendderlich教程和GCD wiki或CFStream Guide,因为我已经将其冲浪到洞。
So 1)这里的变体i
>
错误-连接到主机。
+ (NSString *)getIPAddress {
NSString *address = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
// retrieve the current interfaces - returns 0 on success
success = getifaddrs(&interfaces);
if (success == 0) {
// Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL) {
if(temp_addr->ifa_addr->sa_family == AF_INET) {
// Check if interface is en0 which is the wifi connection on the iPhone
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
return address;
}
NSInputStream*inputStream=(__bridge_transferNSInputStream*)readStream; NSOutputStream*outputStream=(__bridge_transferNSOutputStream*)WriteStream;[inputStream setServer ate: self];[outputStream setServer ate: self];[inputStream计划InRunLoop:[NSRunLoop电流循环]forMode: NSDefaultRunLoopMode];[outputStream计划InRunLoop:[NSRunLoop电流循环]forMode: NSDefaultRunLoopMode];[inputStream open];[outputStream open];
}
NSLog(@“流事件%lu”,streamEvent);
切换(流事件){
case NSStreamEventOpenCompleted:
NSLog(@"Stream opened");
break;
case NSStreamEventHasBytesAvailable:
if (theStream == inputStream) {
uint8_t buffer[1024];
int len;
while ([inputStream hasBytesAvailable]) {
len = [inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
NSLog(@"server said: %@", output);
//[self messageReceived:output];
}
}
}
}
break;
case NSStreamEventErrorOccurred:
NSLog(@"Can not connect to the host!");
break;
case NSStreamEventEndEncountered:
[theStream close];
[theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
// [theStream release];
theStream = nil;
break;
default:
NSLog(@"Unknown event");
}
}
带有GCD的变体2。1.相同2。将两个设备设置为侦听输入
+(void)listenSocket:(GCDAsyncSocket*)listenSocket
{
listenSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
if (![listenSocket acceptOnPort:80 error:&error])
{
NSLog(@"I goofed: %@", error);
}
}
3) 尝试与手动输入的IP连接
+(void)connectToDeviceWithIp:(NSString*)deviceIp andSend:(HSUserCard*)tempCard andSocket:(GCDAsyncSocket*)tempSocket
{
tempSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *err = nil;
if (![tempSocket connectToHost:deviceIp onPort:80 error:&err])
NSLog(@"I goofed: %@", err);
[tempSocket writeData:[NSKeyedArchiver archivedDataWithRootObject:tempCard] withTimeout:-1 tag:1];
}
4)结果什么都没有-我确实在每个委托函数上放了几个中断=什么都没有。
天哪,我在Android上用了20分钟就解决了这个问题!但在这里,它只是驱动疯狂。在多个网络中试用。通过3g,家庭wifi。请有人帮忙!
我从您的各种尝试中看到的问题是,您正在将套接字存储在局部变量中-这意味着一旦方法退出,它将被释放,并且该套接字上不可能进行通信。
您需要将套接字引用存储在属性中。
我使用CocoaAsyncSocket创建了一个示例应用程序,该应用程序演示了侦听连接和建立连接,以及通过保存套接字的属性跟踪连接状态。
这里有https://github.com/paulw11/SocketDemo
为了和Azure IoT设备通信,在创建设备之后会获得设备连接字符串,我们需要用这个字符串创建一个连接凭据。 请求方式: "|4|2|1|connectionString|" 参数 connectionString 设备连接字符串 返回值: "|4|2|1|1|\r" 创建成功 "|4|2|1|2|reason|\r" 创建失败 参数 reason 创建失败的原因 Arduino样例: softS
我有这个使用HikariCP连接池的代码: 我通过发出命令“Show Processlist”来监控mysql中的连接,我看到在行之后创建了100个连接: 。。。正在运行。我肯定这不是命中注定的,对吧?它应该在稍后执行pooledDataSource时创建连接。getConnection()。 我做错了什么?为什么它会立即创建100个连接??
问题内容: 对于我的应用程序,我需要在运行时进行动态数据库连接。我知道,有多种方法可以创建多个数据源,但我认为它们并不是那么动态。设想: 用户可以输入数据库凭据并连接到远程数据库,以将单个行和表导入另一个数据库。为此,我需要动态连接到远程数据库。 我试图在服务中做到这一点,就像他们在“如果在grails中使用groovy sql类”中 所说的那样,它是否使用grails连接池? 注意:在这种情况下
我尝试使用这里的示例代码在<code>中绘制<code>iGraph<code>网络图,并在我自己的<code>数据中使用shoehorn。帧,而不是使用示例空手道俱乐部数据。绘制图形时,它似乎忽略了边缘列表,并且正在进行一系列随机连接。我认为标签或边缘都是错的,但我不知道。 当我运行这个时,我得到了这个漂亮的iGraph,它由绘制。但是,边是不正确的。似乎只有ID的1-10正在连接,并且只有其他
很好的一天! 我正在从glassfish迁移到JBoss 7.1.3。我有。无法创建远程连接的ear应用程序。我猜我的EJB有问题。 下面是我部署的EJB(来自服务器日志) 下面是我在资源调配器中的上下文查找。java代码 下面我已经粘贴了我的服务器。日志和我的应用程序日志供您参考。我遇到错误,比如无法创建远程连接。我在加载包含上述属性的初始上下文时遇到问题。。。ctx=新的初始上下文(jndiP
我创建了一个ssl mongodb连接,如下所示 但在那之后,其他外部rest调用(用于翻译api,google的示例获取语言)失败,并给出以下错误。 由:sun.security.validator.validatoreXception:PKIX路径生成失败:sun.security.provider.certPath.SunCertPathBuilderException:找不到请求目标的有效