当前位置:  技术问答>java相关

我的历史遗留问题。关于JAVA的SOCKET

    来源: 互联网  发布时间:2014-12-22

    本文导语:  我的部分代码: import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InterruptedIOException; import java.net.Socket;   private static Socket dataSocket;   private static  DataInputStream     socketDataIn...

我的部分代码:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.Socket;

  private static Socket dataSocket;
  private static  DataInputStream     socketDataIn;
  private static  DataOutputStream    socketDataOut;

  dataSocket  = new Socket("172.16.18.1",1888);
  dataSocket.setSoTimeout(5000);
  dataSocket.setReceiveBufferSize(8192);  //这个好象没起作用 
  socketDataIn = new DataInputStream(dataSocket.getInputStream());
  socketDataOut= new DataOutputStream(dataSocket.getOutputStream());

  socketDataOut.write(outDataBuff,0,2049);//大于2048的部分收不到
  ...
  int pLength = socketDataIn.read(inDataBuff);

-------------------------------------------------------------------------

我的问题就是当发送超过2048个字节时,SOCKET另外一端收不全,必须再read一次。而我认为这个机制应该是由TCP层提供的,其他的工具C(UNIX)和DELHPI(WINDOWS)均无此问题。难道是JAVA的?

欢迎大家来讨论!

|
DATAOUTPUTSTREM 之类的是发送UNICODE,所以。。。。

|
关注关注,我也想知道怎么回事,提一提
我也帮你问一问

|
socketDataOut.flush();
底层发送都存在一个最小尺度问题,如512字节满了才自动发送,而你的代码刚好不够,所以不会引发自动发送

|
to airwing
我还是觉得与底层有关,因为setReceiveBuffer只是告诉JAVA系统设定一种缓冲机制
但数据总是要发送到网络上的。在物理层,存在一个最小发送长度,如通过ATM传送时好象是512个字节,你可以看看有关书籍,自然明白底层的运作

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • rehat9.0历史命令与键盘设置问题
  • uboot移植后,使用历史命令问题~
  • 在IE5.0中测试Applet,第一次运行没问题,第二次就没任何变化,IE的历史纪录无法消除,对新的程序不认,怎么办??
  • 关于git修改历史log的问题
  • wincvs里面如何取得一个module/文件夹/文件的某个历史版本?
  • 请问,在Cramfs文件系统中怎样实现历史命令记录
  • 大虾,老鸟们,新手请教,都有什么是“由于历史的原因”造成的
  • ssh的root登录在history -w之后~/.bash_history删除相关行为什么重新登录历史命令还在?
  • UNIX下的命令自动补齐、命令行的历史记录是不是只有root帐号有
  • BASH 历史显示框 HSTR
  • 按'k'键不能显示历史命令,谁知道怎么回事?
  • 数据库修改历史记录工具 dbdeploy
  • 我的IE输入form中保存了我以前输入的历史记录,我怎么清除?
  • 如何清除Redhat Linux6.2中的历史记录?
  • JSP如何保留历史记录(急!!)
  • cd命令后面加什么参数可以退回历史目录
  • 如何清除IE里面的历史纪录,让后退健失效?!
  • 如何清除Linux命令的历史记录
  • 如何清除历史操作记录?
  • [请教]在unix里面如何查看以往的历史操作记录?
  • 谁知道线程的发展历史的?
  • 请问linux和unix下是否内查看用户的历史操作?
  • linux内核代码历史版本
  • 清除linux历史记录


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3