0

在 java(服务器)中使用 PrintWriter 通过套接字发送数据:

JAVA

out = new PrintWriter(client.getOutputStream(), true);
out.println("p1");

然后当我在闪存(客户端)中获得这个值时:

闪存 AS3

line = socket.readUTFBytes(socket.bytesAvailable);

此 if 语句未运行:

if (line == "p1") {

当我跟踪行时,我在输出中得到 p1(尽管当我放入断点并在调试中运行时,它显示行等于“p1,而不是“p1”)。

4

3 回答 3

2

大概是因为

out.println("p1");

将附加一个行分隔符(换行和/或回车,具体取决于平台、配置等)。我怀疑这就是为什么您的调试器将值显示为"p1(因为下一行将包含结束引号)。我怀疑你想要:

out.print("p1");

并关闭或刷新写入器(视情况而定)。

我注意到您的评论是您的字符串相等是在 Flash 中执行的(因此.equals()评论不适用)

于 2013-10-23T13:41:11.313 回答
0

要在 java 中比较 String 对象,请使用 .equals() 方法而不是“==”运算符

if (line == "p1") 

应该

if (line.equals("p1")) 
于 2013-10-23T13:43:11.897 回答
-1

检查 line.toString()
if (line.toString() == "p1") {

于 2013-10-23T13:51:02.133 回答