【发布时间】:2023-03-17 01:29:01
【问题描述】:
我想做一个简单的 TCP 客户端。但我遇到了一个错误。当我创建inputStream = (NSInputStream *)readStream; 和outputStream = (NSOutputStream *)writeStream; 时,它建议我引入前缀__bridge 或_bridge_transfer。
首先,它是什么?其次,我都试过了,仍然无法发送消息。我关注了这个tutorial,我也发送消息和流。我安装了 Wireshark 并调用了发送消息,但它没有向 ip 发送任何数据包。
我刚刚在此处发布了 initNetworkCommunication,因为这是我得到“网桥”错误的地方。
- (void) initNetworkCommunication {
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"54.xxx.xxx.xxx", 1333, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
}
服务器很好,因为我已经尝试了示例代码并且得到了响应。
你能帮帮我吗?
【问题讨论】:
-
1.这些关键字是愚蠢的与 ARC 相关的东西;你最好关闭这个项目的 ARC。 2. 我围绕 BSD 套接字 API 创建了一个 Objective-C TCP 包装器,它非常易于使用:github.com/H2CO3/TCPHelper
标签: objective-c cocoa stream inputstream tcpclient