我在写一个客户端应用程序,它将通过tcp/ip接收连续的数据流。我遇到的问题是缓冲读取器对象没有收到任何数据,并且挂在readline方法中。缓冲阅读器没有从套接字接收数据
服务器的工作方式是连接到它,然后发送验证信息以接收数据。我的代码的要点是下面
socket = new Socket(strHost, port);
authenticate();
inStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
process(inStream);
authenticate()
{
PrintWriter pwriter = new PrintWriter(socket.getOutputStream(), true);
pwriter.println(authString);
}
process(BufferedReader bufferedReader)
{
while((line = bufferedReader.readLine()) != null)
dostuff
}
我创建的发送数据的方式(我认为)服务器发送数据,并将其连接,并接收和处理所述数据细的样本服务器应用程序。我可以在我的应用程序中连接到服务器。我也可以telnet到服务器并写入验证字符串,并使用telnet接收大量数据。然而,我的应用程序只是挂在readLine与服务器,我不知道为什么。
的数据进来(通过telnet ATLEAST)看起来像下面的连续流:
data;data;data;data;data
data;data;data;data;data
应用程序为什么会在挂readline的,我不能正确输出验证线?我没有收到任何错误...
编辑 我的示例服务器代码(正常工作)...这同样是模仿仅一路我觉得真正的服务器在运行,但我可以连接到我的应用程序只是没有从真正的服务器接收数据。
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(1987);
}
catch (IOException e)
{
System.out.println("Couldn't listen on port: 1987");
System.exit(-1);
}
Socket clientSocket = null;
try
{
clientSocket = serverSocket.accept();
}
catch (IOException e) {
System.out.println("Accept failed: 1987");
System.exit(-1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String something;
while ((something = in.readLine()) != null)
{
while(true)
{
out.println(message);
}
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
,你能否告诉我们有关问题的服务器代码? – Coeffect 2011-06-15 15:09:55
'我可以在我的应用程序中连接到服务器。'你的意思是你的虚拟示例服务器? – leonbloy 2011-06-15 15:16:39
也许您应该准备好另一个线程来读取您的数据_before_您发送身份验证?我假设服务器只要获取密码就开始泛滥数据。 – toto2 2011-06-15 15:23:10