具体问题:在字符串中不拼接,可以传输,一旦拼接了,客户端就接收不了数据了。
百思不得其解???
data.setText(data.getXinHao()+","+data.getPiCi());
LOGGER.info("查看组装好的text:{}",data.getText());查出来的数据为:B20C-21ZKJ-TP,23100606
最后组装发送指令
LOGGER.info("查看当前组装好的数据指令:{}",data.getData());查出来的数据为:0x02$Data_B20C-21ZKJ-TP,231006060x03
从数据的表面现象看是没问题的
在服务端的代码:
接下来开始传输,通过Secket传输
BufferedWriter bfw = null;
BufferedReader bfr = null;
OutputStream outputStream1 = socket.getOutputStream();
InputStream inputStream1 = socket.getInputStream();
bfw = new BufferedWriter(new OutputStreamWriter(outputStream1));
bfr = new BufferedReader(new InputStreamReader(inputStream1));
输出Data指令
bfw.write(data.getData());
bfw.newLine();
bfw.flush();
bfw.close();
bfr.close();
在客户端的代码
在客户端中没有输出关于Data的指令
public void run() {
try {
while (true){
System.out.println(Thread.currentThread().getName());
System.out.println("客户端线程,等待服务端线程发送消息:");
LOGGER.info("获取当前socket:{}",socket);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
bfr = new BufferedReader(new InputStreamReader(inputStream));
bfw = new BufferedWriter(new OutputStreamWriter(outputStream));
LOGGER.info("获取得到的流:{},{}",bfr,bfw);
// String s = bfr.readLine();
//改写接收方式
String s = "";
while ((s=bfr.readLine())!=null){
System.out.println(s);---------------------------------------------控制台没有输出s的值--------------------
}
System.out.println("获取当前接收的数据"+s);
LOGGER.info("获取接收到的数据:{}",s);
if (s.equals("0x02$Initialize_B20C-21ZKJ-TP-10x03")){
LOGGER.info("接收到服务器传过来的数据:{}",s);
bfw.write("0x02$Initialize_OK0x03");
bfw.newLine();
bfw.flush();
} else if (s.equals("0x02$Data_B20C-21ZKJ-TP,231006060x03")) {
LOGGER.info("接收到了最终数据:{}",s);
bfw.write("0x02$Receive_OK0x03");
bfw.newLine();
bfw.flush();
}else {
LOGGER.error("数据接收失败:{}",s);
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bfr.close();
bfw.close();
socket.close();
} catch (IOException e) {
LOGGER.error("数据流关闭异常:");
}
}
}
最后附上部分源码:
百思不得其解???
data.setText(data.getXinHao()+","+data.getPiCi());
LOGGER.info("查看组装好的text:{}",data.getText());查出来的数据为:B20C-21ZKJ-TP,23100606
最后组装发送指令
LOGGER.info("查看当前组装好的数据指令:{}",data.getData());查出来的数据为:0x02$Data_B20C-21ZKJ-TP,231006060x03
从数据的表面现象看是没问题的
在服务端的代码:
接下来开始传输,通过Secket传输
BufferedWriter bfw = null;
BufferedReader bfr = null;
OutputStream outputStream1 = socket.getOutputStream();
InputStream inputStream1 = socket.getInputStream();
bfw = new BufferedWriter(new OutputStreamWriter(outputStream1));
bfr = new BufferedReader(new InputStreamReader(inputStream1));
输出Data指令
bfw.write(data.getData());
bfw.newLine();
bfw.flush();
bfw.close();
bfr.close();
在客户端的代码
在客户端中没有输出关于Data的指令
public void run() {
try {
while (true){
System.out.println(Thread.currentThread().getName());
System.out.println("客户端线程,等待服务端线程发送消息:");
LOGGER.info("获取当前socket:{}",socket);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
bfr = new BufferedReader(new InputStreamReader(inputStream));
bfw = new BufferedWriter(new OutputStreamWriter(outputStream));
LOGGER.info("获取得到的流:{},{}",bfr,bfw);
// String s = bfr.readLine();
//改写接收方式
String s = "";
while ((s=bfr.readLine())!=null){
System.out.println(s);---------------------------------------------控制台没有输出s的值--------------------
}
System.out.println("获取当前接收的数据"+s);
LOGGER.info("获取接收到的数据:{}",s);
if (s.equals("0x02$Initialize_B20C-21ZKJ-TP-10x03")){
LOGGER.info("接收到服务器传过来的数据:{}",s);
bfw.write("0x02$Initialize_OK0x03");
bfw.newLine();
bfw.flush();
} else if (s.equals("0x02$Data_B20C-21ZKJ-TP,231006060x03")) {
LOGGER.info("接收到了最终数据:{}",s);
bfw.write("0x02$Receive_OK0x03");
bfw.newLine();
bfw.flush();
}else {
LOGGER.error("数据接收失败:{}",s);
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bfr.close();
bfw.close();
socket.close();
} catch (IOException e) {
LOGGER.error("数据流关闭异常:");
}
}
}
最后附上部分源码: