iOS SDK中使用套接字编程的文本聊天应用程序

时间:2013-11-29 10:03:43

标签: ios iphone objective-c sockets cfstream

我想借助iOS中的“套接字编程”实现文本聊天功能。我知道在主机和端口的帮助下连接到服务器的过程,如:

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)(@"127.1.0.0"), 80, &readStream, &writeStream);

但我想知道如何在聊天期间在两个聊天用户之间建立套接字连接?

我是否必须在聊天用户之间使用服务器?

2 个答案:

答案 0 :(得分:4)

您有两种选择。一个是使用两个客户端连接的服务器。如果您不想这样做,则必须在客户端中实施TCP服务器。

所以你需要任何类型的服务器,客户端可以连接到。使用CFNetwork实现服务器并不复杂。只需谷歌“iOS TCP服务器”或类似。

我今天不在办公室,所以我很遗憾无法发布你可以开始的代码,对不起。

当我开始进行TCP编程时,我发现本教程非常有用。 Ray Wenderlich做了很好的教程。

如果你没有使用它,我会在星期一发布一些代码,当我回到我的代码库时:)

http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server

答案 1 :(得分:2)

您需要一个客户端可以连接的服务器。我建议使用发布 - 订阅模式。

publish-subscribe是一种消息传递模式,其中消息的发送者(称为发布者)不会将消息编程为直接发送到称为订阅者的特定接收者,而是将发布的消息表征为类,而不知道哪些订阅者(如果有的话),可能有。类似地,订户表达对一个或多个类的兴趣并且仅接收感兴趣的消息,而不知道哪些发布者(如果有的话)存在。 资料来源:Wikipedia

将用户A的应用程序订阅到主题“/ topic / user-a”,将用户B的应用程序订阅到主题“/ topic / user-b”,并将数据发布到其他用户的主题。

对于服务器端,您可以使用Socket.io,Mosquitto.org,RabbitMQ等可用选项。 示例聊天SDK代码是iOS:https://github.com/AppLozic/Applozic-iOS-SDK

如果您打算使用MQTT,可以使用https://github.com/ckrey/MQTT-Client-Framework