HCodeRunner 2016-05-17 15:04 采纳率: 20%
浏览 4073

java socket 多次反复通信

我用java socket实现简单的通讯功能,在做登陆的时候,客户端将用户名密码读取出来
发送给服务器(这是第一步),服务器读取信息后校验(这是第二步),校验后发送给客户端,客户端读取是否登陆成功的消息(这是第三步),但是,第一步第二步都没问题,但客户端无法将服务器再次发送的消息读取出来,下面是我的部分代码,我不知道怎么实现这种多次反复通信的问题,希望大家不吝赐教。
服务器代码:
output = new OutputStreamWriter(socket.getOutputStream());
input = new DataInputStream(socket.getInputStream());
byte [] b2=new byte[1024];
int len=input.read(b2);
String str = new String(b2,0,len); //读取用户名密码
System.out.println("客户端接收到的用户名密码:"+str);
//此处校验代码省略,假设用户名密码正确
output.write("reponse:1"); //发送给客户端登陆消息
System.out.println("服务器消息:登陆消息已发给客户端");

服务器控制台:
已启动监听,调用线程进入等待阶段……
服务器消息,客户端已响应
服务器消息:服务器已经建立与客户端的连接,客户端ip:/127.0.0.1
已启动监听,调用线程进入等待阶段……
客户端接收到的用户名密码:command:1;userName:username;passWord:password
服务器消息:登陆消息已发给客户端

客户端代码:
input = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
DataOutputStream output =
new DataOutputStream(socket.getOutputStream());
byte[] b = MainWindow.DATA.getBytes(); //将用户名密码转化为byte
output.write(b); //发送给服务器
System.out.println("用户名,密码信息已发送");
output.flush();
String str = input.readLine(); //读取服务器消息
System.out.println("客户端消息:已读取到登录信息");
if(str.equals("reponse:1")){
LoginDialogs.AUTH = true; //授予客户端登录权限
}
System.out.println(LoginDialogs.AUTH);
客户端控制台:
已连接
登陆按钮消息:已点击
用户名,密码信息已发送

  • 写回答

1条回答 默认 最新

  • Robot-S 2016-05-17 15:12
    关注

    今天在做一个东东的时候,再次用到了socket,对于java来说,简单的网络通信,基本都会想到使用socket实现。那么接下来问题来了,挖掘机技术哪家强呢?(ps:开个玩笑哈)
    在socket通信的时候,当传输数据的时候,可能使用String字符串类型,byte数组类型,等等。那么问题真的来了,使用String字符串怎传输呢?这个就是今天的话题,那么直接上代码喽:(注:主要要看红色标记的,绿......
    答案就在这里:java中的Socket通信
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?