首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Objective-C套接字在iOS上的发送和接收

Objective-C套接字在iOS上的发送和接收
EN

Stack Overflow用户
提问于 2016-11-25 15:40:34
回答 3查看 1.2K关注 0票数 0

我对Objective-C非常陌生,我想在我正在开发的iOS应用程序和我的Python3套接字服务器(可以工作)之间进行通信。问题是我不知道如何在Objective-C中使用套接字,也不知道在Xcode8中安装库时从哪里开始。现在我只希望能够将数据发送到服务器,并在iOS设备上接收返回的响应。我看过sys.socket.h,但我还是不知道如何使用它,任何帮助都将不胜感激。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2016-11-25 18:27:27

几年前,我使用了SocketRocket。我从我的旧项目中发布了它的一些代码。我不知道这是否仍然有效,但您可能会有使用它的想法。

  1. 连接到服务器

NSMutableURLRequest *pushServerRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"ws://192.168.1.1"]]; [pushServerRequest setValue:@"WebSocket" forHTTPHeaderField:@"Upgrade"]; [pushServerRequest setValue:@"Upgrade" forHTTPHeaderField:@"Connection"]; [pushServerRequest setValue:"somekey" forHTTPHeaderField:@"Sec-WebSocket-Protocol"]; SRWebSocket *wsmain = [[SRWebSocket alloc] initWithURLRequest:pushServerRequest]; //Declare this as a global variable in a header file wsmain.delegate=self; [wsmain open];

  1. 委派方法

-(void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message { NSLog(@"Message %@",message); } - (void)webSocketDidOpen:(SRWebSocket *)webSocket { NSLog(@"Connected"); }

  1. 发送命令

[wsmain send:commands];

通过发送命令,您将收到didReceiveMessage方法的响应。

票数 0
EN

Stack Overflow用户

发布于 2016-11-25 18:30:27

你看到https://github.com/robbiehanson/CocoaAsyncSocket了吗?socket使用起来很简单

代码语言:javascript
代码运行次数:0
运行
复制
NSString *host = @"10.70.0.22";
int port = 1212;

_socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];

NSError *error = nil;
[_socket connectToHost:host onPort:port error:&error];
if (error) {
    NSLog(@"%@",error);
}

委派

代码语言:javascript
代码运行次数:0
运行
复制
-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{
NSLog(@"success");
}
-(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{
if (err) {
    NSLog(@"error %@",err);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self connectToServer];
    });
}else{
    NSLog(@"disconnect");
}

}

票数 0
EN

Stack Overflow用户

发布于 2016-11-26 20:43:20

另一个选择是socket.io。它有用Swift编写的服务器库和iOS客户端库。它的API是相当广泛的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40799923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档