为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我写的javaSocket通信 服务端接收不到?

为什么我写的javaSocket通信 服务端接收不到?

qq_风云_13 2016-05-05 14:46:23
为什么我写的javaSocket通信,客户端连接服务端了,然后客户端发送消息给服务端,服务端接收,这个时候服务端接收的文件获取不到,只有等到客户端关闭的时候,服务端才能接到。这是代码 package server; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args){ //1.创建一个服务器端socket即serversocket指定绑定的端口并监听此端口 ServerSocket serverSocket=null; String info=null; InputStream is=null; OutputStream os=null; try { serverSocket = new ServerSocket(8888); //2.调用accept()方法开始监听,等待客户端的连接 //让客户端一直访问 Socket socket =null; while(true){ socket = serverSocket.accept(); InetAddress ss = socket.getInetAddress(); System.out.println(ss.getHostAddress()); //3.获取输入流,并读取客户端信息 is=socket.getInputStream();//字节输入流 os=socket.getOutputStream(); DataOutputStream dos=new DataOutputStream(os); DataInputStream dis=new DataInputStream(is); // InputStreamReader isr=new InputStreamReader(is);//将字节流转化为字符输入流 // BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲 String s=null; s=dis.readUTF(); while((s=dis.readUTF())!=null){ System.out.println("我是服务器,客户端说"+s); System.out.println("IP"+socket.getInetAddress()); System.out.println("port"+socket.getPort()); } if(socket.isClosed()){ System.out.println("关闭"); }else{ System.out.println("没关闭"); } //4.获取输出流,响应客户端的请求 dos.writeUTF("hello"); dis.close(); socket.close(); } } catch (IOException e) { System.out.println("客户端异常断开"); } } }小弟跪求大家帮帮忙了!
查看完整描述

2 回答

?
后台学前端

TA贡献30条经验 获得超12个赞

肯定要flush(回去仨)

查看完整回答
反对 回复 2016-05-06
?
好帮手慕珊

TA贡献39条经验 获得超17个赞

有可能没清空缓冲区,在

dos.writeUTF("hello");

这条语句后面调用dos.flush();方法试试

查看完整回答
反对 回复 2016-05-05
  • qq_风云_13
    qq_风云_13
    这样不行哦 我可能少打了这个代码 改了好多次 谢谢你的回答哦
  • 好帮手慕珊
    好帮手慕珊
    你的客户端和服务器端是写到一起了吗,也就是说,你一共就这一个程序吗?这里没有看到客户端连接服务器端的代码呀Socket socket=new Socket("localhost",8888); 建议你看一下这个课http://www.imooc.com/learn/161 ,第三章是关于客户端与服务器端通信的
  • qq_风云_13
    qq_风云_13
    表示搞不懂 这明明就是服务端的问题了 ,如果我不用java客户端通信呢 我用c通信呢 亦或者我用易语言通信呢 客户端代码package client; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class cc { public static void main(String[] args) { Socket socket=null; InputStream in=null; OutputStream out=null; try { socket=new Socket("localhost",8888); in=socket.getInputStream();//字节输入流 out=socket.getOutputStream(); DataOutputStream dos=new DataOutputStream(out); DataInputStream dis=new DataInputStream(in); dos.writeUTF("王"); String s=null; while((s=dis.readUTF())!=null){ System.out.println("我是客户端,服务器说"+s); System.out.println("IP"+socket.getInetAddress()); System.out.println("port"+socket.getPort()); } // dos.close(); dis.close(); System.out.println("连接关闭"); socket.close(); } catch (UnknownHostException e) { System.out.println("不知道的主机名"); e.printStackTrace(); } catch (IOException e) { System.out.println("io流错误或服务器已经关闭"); } } }
点击展开后面2
  • 2 回答
  • 0 关注
  • 2609 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信