BufferedReader不接收来自LXSocket的字符串

时间:2012-05-14 23:49:14

标签: java objective-c client exc-bad-access

我正在开发一个简单的测试,通过socket连接java服务器应用程序和objective-c客户端。

这是java方面:

BufferedReader dis = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
String message = dis.readLine();
System.out.println("Message Received: " + message);
dis.close();
socket.close();

这是客观方面的一面:

- (IBAction)click:(id)sender{
    @try {   
        [socket sendString:[NSString stringWithFormat:@"%@",[toSend text]]];
    }
    @catch (NSException * e) {
        NSLog(@"Unable to send data");
    }
    [toSend resignFirstResponder];
}

有很多问题:

以这种方式输出服务器:

Message Received: null

我在this上看到readLine()需要收到一个字符串"\n"结束字符串,所以我在添加\n后编辑该行:

[socket sendString:[NSString stringWithFormat:@"%@\n",[toSend text]]];

但我在此行检索错误:EXC_BAD_ACCESS,如截图

EXC_BAD_ACCESS

可能是什么问题?有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

我在Java方面做了一个原型,我没有Objective-C / iOS或Apple产品。 我怀疑问题可能出在iOS或Java方面。所以我希望你能正确地从iOS发送文字。

建议代码:

BufferedReader dis = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.defaultCharset()));

类InputStreamReader需要一个已定义的字符集。 charset应该是必需的,而不是可选的!根据Sun文档。

为方便起见,请在下次包含更多代码以进行干净编译。感谢。

祝你好运,试试吧!

Tommy Kwee

答案 1 :(得分:0)

根据您修改的帖子/问题,您从Objective-C方面获得了一个例外。所以问题可能不在Java方面。 出于调试目的,我建议使C代码更简单,比如......

BOOL success;
success = [socket SendString: @"Hello World!"];
if (success != YES) {
  NSLog(@"Fail to send")
}

注意:

  • 我不熟悉Objective-C,但我找不到Apple的文档。如果您知道,请告诉我/我们。

  • 我没有使用代码“[发送文字]”,因为我没有找到任何参考资料。

  • 其他iOS开发人员称“%@”是指对象。代码[发送文本]是一个对象吗?

最后,建立套接字并实现沟通应该是可能的,而不是那么难,最终我们会到达那里。那就让我们做吧!