我正在开发一个简单的测试,通过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,如截图
可能是什么问题?有人能帮助我吗?
答案 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开发人员称“%@”是指对象。代码[发送文本]是一个对象吗?
最后,建立套接字并实现沟通应该是可能的,而不是那么难,最终我们会到达那里。那就让我们做吧!