Java TCP连接套接字。getInputStream()
我创建了一个应用程序,它通过两种方式与给定的端口和传输数据建立连接。但是我在从服务器读取数据时遇到了问题Java TCP连接套接字。getInputStream(),java,sockets,tcp,Java,Sockets,Tcp,我创建了一个应用程序,它通过两种方式与给定的端口和传输数据建立连接。但是我在从服务器读取数据时遇到了问题 try{ Socket skt = new Socket(127.98.68.11, 1111); // connecting to this to get data String message = "some test message"; if(option.equalsIgnoreCase("send")){ OutputStream
try{
Socket skt = new Socket(127.98.68.11, 1111); // connecting to this to get data
String message = "some test message";
if(option.equalsIgnoreCase("send")){
OutputStream outToServer = skt.getOutputStream();
outToServer.write(message); // this is working, message stored on server-side
}else if(option.equalsIgnoreCase("receive")){
BufferedReader in = new BufferedReader (new InputStreamReader(sit.getInputStream()));
String fromServer = in.readLine();
System.Out.Println(fromServer);
}
}catch(IOException io){
io.printStackTrace();
}
在这个项目中,一切都按预期进行。除了在.readline()中
我试着在调试模式下运行这个程序,当编译器到达这个命令时。是什么也没做,我也看不到光标,这可能是因为您试图在.readLine()中执行一个
,
,这要求服务器终止“receive”命令,该命令用换行符发送给客户端。。“\n”或“\r\n”会发生什么情况?听起来您的服务器没有向您发送线路,所以请调试服务器上发生的事情(甚至使用Wireshark在TCP流上)。您的BufferedReader
从名为sit
的变量中获取输入流,但您的Socket
是以skt
的名称声明的。这是打字错误吗?没有引号的equalsIgnoreCase(receive)
呢?这些打字错误不在实际代码中。我的问题是我没有得到数据流,甚至没有抛出任何异常/错误。程序持续运行数小时并在不打印预期数据流的情况下终止。read()是否获取完整的数据字符串?你能告诉我如何获取数据吗。因为程序正在终止任何读/读行。如何获取此工作???in.read()
将仅检索单个字符。。您需要使用in.read(char[],int,int)
方法读取char缓冲区数组。继续读取,直到得到-1,然后将缓冲区数组转换为字符串。。然后检查此字符串是否为.equalsIgnoreCase(“接收”)