【发布时间】:2012-06-07 05:05:58
【问题描述】:
我一直在尝试从我的自定义 Cocoa 应用程序(当然是用 Objective-c 编写的)向我的世界服务器发送数据包。不过,我对如何做到这一点感到有些困惑。我是用 Java 做的。那很容易。这样做是objective-c,但事实证明更具挑战性。
这是我正在使用的代码:
- (void)handshake
{
PacketHandshake *packet = [PacketHandshake packetString:[NSString stringWithFormat:@"%@;%@:%i", username, IP, PORT]];
[packet writeData:dataOut];
}
调用者:
- (void)writeData:(NSOutputStream *)dataOut
{
[super writeData:dataOut]; //Writes the "header" which is a char with the value of 0x02 (char packetID = 0x02)
NSUInteger len = [string lengthOfBytesUsingEncoding:NSUTF16BigEndianStringEncoding]; //Getting the length of the string i guess?
NSData *data = [string dataUsingEncoding:NSUTF16BigEndianStringEncoding]; //Getting string bytes?
[dataOut write:(uint8_t*)len maxLength:2]; //Send the length?
[dataOut write:[data bytes] maxLength:[data length]]; //Send the actual string?
}
我已经事先与服务器建立了成功的连接,但我真的不知道我是否正确发送了数据包。有人可以解释一下我应该如何发送各种数据类型和对象。 (int, byte/char, short, double, NSString, BOOL/bool)
另外,是否有任何特定或通用的方式来发送像 Minecraft 所需的数据包?
好的,我想现在的问题是:数据类型(主要是字符串)在 Java 和 Objective-C 中是如何关联的?
感谢您的帮助,谢谢!
没人知道吗?
【问题讨论】:
标签: objective-c cocoa networking packet minecraft