java socket DataOutputStream无法发送

ianafollow 2016-03-17 07:13:57
java socket DataOutputStream,第一次正常发送,也可以接收 到,第二次发送时,服务端没有接收到,这边也不报错,不知什么原因,也不是服务端每次都收不到,有时能收到,所以想问大神们,有什么原因会这样。
...全文
298 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ianafollow 2016-03-21
  • 打赏
  • 举报
回复
引用 5 楼 willkinson 的回复:
饿,那这让服务器端配合下查下,如果非要分开查这件事情就在你客户端抓包
问一下,怎么抓包
willkinson 2016-03-17
  • 打赏
  • 举报
回复
饿,那这让服务器端配合下查下,如果非要分开查这件事情就在你客户端抓包
ianafollow 2016-03-17
  • 打赏
  • 举报
回复
服务端是另一个人写的,我是写客户端的
ianafollow 2016-03-17
  • 打赏
  • 举报
回复
我这边客户端是java写的,服务端是c#写的
willkinson 2016-03-17
  • 打赏
  • 举报
回复
一方面每次在客户端发送完之后flush一把,保证把数据推出去,另外一方面在服务器端接收完数据后重新开始等待客服端数据的地方打印一下,看看服务器端的接收线程是否被堵住了,不能接收下一个数据了,如果可以贴下代码最好
ianafollow 2016-03-17
  • 打赏
  • 举报
回复
不报 错是不是说明其实已经发出去了,只是服务端没有接收到?
服务器端: package com.softeem.socket.server; import java.io.FileNotFoundException; import java.io.IOException; public class FileServer { /** * @param args */ public static void main(String[] args) { // 读取本地文件 try { java.io.FileInputStream fis = new java.io.FileInputStream( new java.io.File("d:\\数据库.zip")); // 转换成网络输出流 java.net.ServerSocket ss = new java.net.ServerSocket(9000); java.net.Socket sk = ss.accept(); //DataOutputStream 处理数据 数据的输出流 java.io.OutputStream os = new java.io.DataOutputStream( sk.getOutputStream()); // 利用网络输出流将文件传到客户端 边读边发送 int len=0; byte[] buff = new byte[1024]; while((len=fis.read(buff))!=-1){ os.write(buff, 0, len); os.flush(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 客户端: package com.softeem.socket.client; import java.io.FileNotFoundException; import java.io.IOException; import java.net.UnknownHostException; public class FileClient { /** * @param args */ public static void main(String[] args) { // 文件的输出流 try { java.io.FileOutputStream fos = new java.io.FileOutputStream( new java.io.File("e:\\database.zip ")); // 网络的输入流 java.net.Socket sk = new java.net.Socket("192.168.1.101",9000); java.io.InputStream is = new java.io.DataInputStream( sk.getInputStream()); // 接受网络输入流 写入文件 int len = 0; byte[] buff = new byte[1024]; while((len=is.read(buff))!=-1){ fos.write(buff, 0, len); fos.flush(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 有源码和体会,写的很详细和完整。

62,614

社区成员

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

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