通过套接字发送的字符串与应该匹配的字符串不匹配

时间:2013-10-23 13:39:49

标签: java flash sockets

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

JAVA

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

然后当我在flash(客户端)中获取此值时:

FLASH AS3

line = socket.readUTFBytes(socket.bytesAvailable);

此if语句未运行:

if (line == "p1") {

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

3 个答案:

答案 0 :(得分:2)

可能是因为

out.println("p1");

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

out.print("p1");

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

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

答案 1 :(得分:0)

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

if (line == "p1") 

应该是

if (line.equals("p1")) 

答案 2 :(得分:-1)

使用line.toString()检查 if(line.toString()==“p1”){