gpt4 book ai didi

java - 无法将数据从 obj-c 客户端发送到 java 服务器

转载 作者:行者123 更新时间:2023-11-30 11:44:29 25 4
gpt4 key购买 nike

我正在编写一个处理服务器端和客户端的 iPhone 应用程序。我遇到的问题是我无法将任何数据从我的应用程序(客户端)发送到我的 java 程序(服务器端)。我现在有点卡住了,非常感谢任何帮助。

我的 obj-c 代码(客户端):

- (BOOL) initConnection: (NSString *) ipAddr {
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)ipAddr, 4444, NULL, &writeStream);

if(!writeStream)
return NO;

outStream = (__bridge NSOutputStream *) writeStream;

[outStream setDelegate:self];

[outStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

[outStream open];

self.data = [[NSData alloc] init];

return YES;


- (void) sendCommand: (NSString *) command {
NSLog(@"Command that was sent to method: %@", command);

self.data = [NSData dataWithBytes:@"This is a test\n" length:16];

int bytes = [outStream write:[self.data bytes] maxLength:[self.data length]];

我的 Java 代码(服务器):

private void handleCommands() {
try {
do {
System.out.println("Right before reading socket");
msg = in.readLine();

System.out.println("Received: " + msg);

} while(!EOC);
} catch(IOException e) {
e.printStackTrace();
}
}

发生的事情是,当我从我的应用程序发送数据时,服务器端的代码永远不会过去
msg = in.readLine()。当我在应用程序端终止连接时,它会打印出接收到的字符串为 null

最佳答案

实际上在这行代码上:

self.data = [NSData dataWithBytes:@"This is a test\n" length:16];

字符串长度为 15,但您将 16 作为参数传递。也许它在等待最后一个字符?

尽量不要对字符串长度进行硬编码,例如:

NSString *msgStr = @"This is a test\n";
self.data = [NSData dataWithBytes:msgStr length:[msgStr length]];

关于java - 无法将数据从 obj-c 客户端发送到 java 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com