java - 如何读取或打印 BufferedReader (InputStreamReader)
问题描述
我正在创建一个新套接字以通过套接字发送字符串,然后套接字生成一个回复(我在 Wireshark 中监视回复)但在代码中我看不到任何答案,只有当我再次使用另一个应用程序连接到套接字时,然后我在第一个套接字连接中收到答案。
public class TCPConnections
{
public static void main (String[] args) throws Exception
{
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
String response = "";
String hostGreetings = "<frame><cmd><id>5</id><hostGreetings><readerType>SIMATIC_RF680R</readerType><supportedVersions><version>V2.0</version></supportedVersions></hostGreetings></cmd></frame>\n";
String getReaderStatus = "<frame><cmd><id>2</id><getReaderStatus></getReaderStatus></cmd></frame>\n";
StringBuilder antwort = new StringBuilder();
int c;
int counter = 0;
try
{
String host = "30S50RFID01.w30.bmwgroup.net";
int port = 10001;
InetAddress address = InetAddress.getByName(host);
System.out.println("adress: " + address);
socket = new Socket(address, port);
System.out.println("Socket connected: " + socket.isConnected());
System.out.println("Remote Port: " + socket.getPort());
System.out.println("Traffic Class: " + socket.getTrafficClass());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
//byte [] bytes = hostGreetings.getBytes("UTF-8");
//System.out.println("UTF-8 = "+bytes);
if (socket.isConnected())
{
out.println(hostGreetings);
System.out.println("Message send:" + hostGreetings);
System.out.println("Message send:" + socket.getOutputStream());
System.out.println("Greeting sent, waiting for response");
Thread.sleep( 2000 );
boolean reading = true;
while (reading) {
if(in.ready ()){
c = (char) in.read();
response = response + c;
System.out.println("Reply" + response);
}else {
reading = false;
}
}
}
}
else
{
System.out.println("Socket connected: " + socket.isConnected());
}
}
catch (IOException ex)
{
System.out.println("Error 1: " + ex.getMessage());
}
catch (InterruptedException ex)
{
Logger.getLogger(TCPConnections.class.getName()).log(Level.SEVERE, null, ex);
}
finally
{//Closing the socket
try
{
System.out.println("Connection will be closed and program terminated");
out.close();
in.close();
socket.close();
}
catch (IOException ex)
{
System.out.println("Error 2: " + ex.getMessage());
}
}
}
}`
解决方案
推荐阅读
- vb.net - 格式化命令不适用于表格中的希伯来语文本
- android - 我试图从 RandomUser API 获取图像,但我的应用程序崩溃了
- javascript - 将带有完整月份名称和时间的日期转换为 ISO 日期
- scala - Scala play 框架中的重定向
- go - 缓冲通道旋转的简单锁定
- android - Visual Studio Cordova Gradle 构建失败
- python - 通过 python 使用“at”(<<<)执行 bash 命令:语法错误,看到最后一个标记
- laravel - 定义发送电子邮件的发件人
- vb.net - 使用循环隐藏功能区控件 vb.net
- visual-studio - 在 VS 2017 社区版中,无法看到 MVC 项目选项(模板未显示)?