tcp无法正常获取客户端的输入流

weixin_44229296 2020-09-27 08:03:19
客户端
控制台只输出到2,不往下执行了

package com.yqx.tcp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class LoginClient {

public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
Socket client=new Socket("localhost", 1111);
System.out.println(1);
ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(client.getOutputStream()));
System.out.println(2);
//InputSteam!!!!
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(client.getInputStream()));
System.out.println(3);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名");
String name=br.readLine();
System.out.println("请输入密码");
String pwd=br.readLine();
oos.writeObject(new User(name, pwd));
oos.flush();

String msg=ois.readUTF();
System.out.println(msg);
ois.close();
client.close();
}

}


服务器

package com.yqx.tcp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class LoginServer{

public static void main(String[] args) throws IOException, ClassNotFoundException {
ServerSocket server=new ServerSocket(1111);
Socket client=server.accept();
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(client.getInputStream()));
ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(client.getOutputStream()));
User u=(User)ois.readObject();
System.out.println(u);
if(u.getName().equals("yqx")&&u.getPassword().equals("123")){
oos.writeUTF("登陆成功!");
}
else{
oos.writeUTF("账号或密码错误!");
}
oos.close();
client.close();
}

}


而当我客户端在后面获取输入流却可以正常运行

代码没有改,只是换了client.getInputStream()的位置

package com.yqx.tcp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class LoginClient {

public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
Socket client=new Socket("localhost", 1111);
ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(client.getOutputStream()));
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名");
String name=br.readLine();
System.out.println("请输入密码");
String pwd=br.readLine();
oos.writeObject(new User(name, pwd));
oos.flush();
//InputSteam!!!!
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(client.getInputStream()));
String msg=ois.readUTF();
System.out.println(msg);
ois.close();
client.close();
}

}
...全文
1057 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
街头小贩 2020-09-30
  • 打赏
  • 举报
回复
ServerSocket 是不是需要一个while呀,难道不是一直在侦听吗? Writing the Server Side of a Socket

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧