Tag: tcp

使用iPhone作为热点时,TCP连接无法正常工作

我正在开发一个iOS应用程序,通过TCP套接字连接到Android上运行的服务器应用程序。 为了find第二个设备的IP,我使用UDP请求并接收服务器的IP。 当我将它们连接到Wi-Finetworking或将Android设备用作iPhone的热点时,它一直运行良好。 但是,如果我想让iOS设备成为个人热点,那么我无法在两个设备之间build立联系,而且这个应用程序在这个系统中是无用的。 那么是否有可能连接设备,是algorithm的问题? 我很高兴听到有人遇到类似的问题,并且知道解决scheme。

在Swift中通过TCP发送消息(NULL终止)

我正在使用以下代码的swift套接字库: let client:TCPClient = TCPClient(addr: "127.0.0.1", port: 8080) var (success,errmsg)=client.connect(timeout: 1) if success{ var (success,errmsg)=client.send(str:"|~\0" ) if success{ let data=client.read(1024*10) if let d=data{ if let str=String(bytes: d, encoding: NSUTF8StringEncoding){ print(str) } } }else{ print(errmsg) } }else{ print(errmsg) } 代码工作的很好,但我的问题是我的服务器得到的数据没有null-terminator,你可以在下一个链接看到: https : //gyazo.com/1a6576b515d37c9400a58ac67bfa2350我该怎么办?

从CocoaAsyncSocket开始

我一直在寻找方法来发送文件(iphone上logging的小型声音)通过TCP到服务器和从服务器到其他设备。 看来最简单的方法是使用CocoaAsyncSocket项目。 (这是真的吗?) 然而,虽然我可以find很多关于如何使用它的例子,但我找不到一个关于如何安装的例子。 我对iOS和Xcode相对来说比较陌生,在这方面也相当迷茫。 有人可以向我解释如何获得图书馆? (我知道如何添加一个库到我的项目,但是我只能通过gitHubfind.m文件的下载) 谢谢

Swift:TCP套接字保持活动

我正在开发一个iOS应用程序(使用Swift),它使用TCP连接到TCP服务器。 目前,只要我发送了一些东西,连接就会自动closures。 我想保持连接打开/活着,直到我手动closures它。 从这个基于Objective-C的问题中,我发现在Objective-C中可以这样做: #include <sys/socket.h> … CFDataRef socketData = CFReadStreamCopyProperty((__bridge CFReadStreamRef)(stream), kCFStreamPropertySocketNativeHandle); CFSocketNativeHandle socket; CFDataGetBytes(socketData, CFRangeMake(0, sizeof(CFSocketNativeHandle)), (UInt8 *)&socket); CFRelease(socketData); int on = 1; if (setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)) == -1) { NSLog(@"setsockopt failed: %s", strerror(errno)); } 我目前的Swift实现/翻译如下所示: var socketData = CFReadStreamCopyProperty(inputStream, kCFStreamPropertySocketNativeHandle) as CFDataRef var socket: CFSocketNativeHandle CFDataGetBytes(socketData, CFRangeMake(0, sizeof(CFSocketNativeHandle)), (UInt8).self&socket) var […]

GCDAsyncSocket在Swift中

我想打开一个基于ELM327芯片的OBDencryption狗的TCP连接。 所以我决定使用GCDAsyncSocket库。 我写了这个代码, import UIKit import CocoaAsyncSocket class ViewController: UIViewController, GCDAsyncSocketDelegate { let addr = "192.168.0.10" let port:UInt16 = 35000 var socket:GCDAsyncSocket! override func viewDidLoad() { super.viewDidLoad() socket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) do { try socket.connectToHost(addr, onPort: port) } catch let e { print(e) } // Do any additional setup after loading the view, […]

每小时轮询到TCP服务器ios

在我目前的应用程序中,我需要每小时通过TCP连接轮询到服务器。 我知道,最好的select之一是从服务器端使用推送通知,但我不能这样做。 所以目前我正在使用一个计时器,每9分钟启动一次,以保持应用程序在后台运行。 这工作正常..在小时我打电话给服务器的调查。 打开Tcp连接并生成轮询数据,但服务器没有响应。 这是因为当在后台应用程序不能运行需要几秒钟的代码块? 任何帮助将不胜感激,我也发布一些代码下面, if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) { //Check if our iOS version supports multitasking IE iOS 4 if ([[UIDevice currentDevice] isMultitaskingSupported]) { //Check if device supports mulitasking UIApplication *application = [UIApplication sharedApplication]; __block UIBackgroundTaskIdentifier background_task; background_task = [application beginBackgroundTaskWithExpirationHandler: ^ { UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; ViewController *controller […]

NSStream处理事件给状态4

我试图在一个TCP连接的应用程序,我得到一个NSStreamEvent“4”handleEvent。 我究竟做错了什么? 我的代码就像, -(void) initNetworkCommunication { CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 80, &readStream, &writeStream); inputStream = (__bridge_transfer NSInputStream *)readStream; outputStream = (__bridge_transfer NSOutputStream *)writeStream; [inputStream setDelegate:self]; [outputStream setDelegate:self]; [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [inputStream open]; [outputStream open]; } – (IBAction)didTapButton:(id)sender { NSString *response = inputTextField.text; NSLog(@"%@", response); NSData *data = [[NSData […]

通过xmpp或websocket进行即时通讯

我有项目要求,我想在android / iphone中做一个即时通讯应用程序,并可能在未来它支持voip和video聊天。 现在我有2个select 1)xmpp – 即时通讯的应用层协议,已经有近10年的历史了,它有很多支持voip的扩展,或者可以是video聊天,在线/离线状态和其他许多function。 它被诸如whatsapp,fb,Skype等大公司所接受 另外我听说谷歌已经摆脱了这个协议,因为漏洞。 2)websocket – 它是tcp层协议,它通过一个单独的tcp连接提供全双工通信,它是新的,在2011年被IETF标准化。我不知道这个协议是否主要用于IM。 但是我知道它可以像在tcp层一样完成。 我没有看到或听到任何function/扩展的networking套接字除了4种方法(即onOpen,onClose,onMessage和onError)。 所以这意味着如果我select这个,我必须使自己的在线/离线状态的方法(可能是每“x”秒/分钟)发送一帧,voip,消息传递信息和其他function等。 我很困惑,从开发,服务器处理成本,安全性,会话处理pipe理,浏览器支持等方面来说,我selectxmpp还是web socket。 如果我对这两个协议有任何错误,请纠正我。 提前致谢

在iPhone上接收图像(TCP客户端)

我正在编程iPhone上的客户端。 我想发送一些string,并从服务器接收图像。 我发现这个教程(http://www.devx.com/wireless/Article/43551),它已经非常有用。 它可以工作,如果我想接收string,但现在我想要接收一个图像,我不能使它的工作。 当iPhone收到数据时,这是我的代码。 这是一个混合与教程和JeremyP这个答案(http://stackoverflow.com/questions/4613218): – (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { switch(eventCode) { case NSStreamEventHasBytesAvailable: { if (data == nil) { data = [[NSMutableData alloc] init]; } uint8_t buf[102400]; unsigned int len = 0; len = [(NSInputStream *)stream read:buf maxLength:102400]; if(len) { [data appendBytes:(const void *)buf length:len]; // Recibir img uint8_t size; // Let's make […]

使用iOS设备作为TCP客户端 – 没有Bonjour

我想使用iOS设备作为TCP客户端,但我找不到一个可以理解的API /指南/如何做到这一点的示例。 我尝试了SimpleNetworkStreams和PictureSharing ,但他们都使用Bonjour。 我可以通过UDPEcho轻松地build立UDP连接,但我无法find和UDPEcho for TCP一样好的样本。 我想要一个连接到服务器的简单示例,并在屏幕上打印来自服务器的所有传入消息 – 就是这样。 谢谢!