我的历史遗留问题。关于JAVA的SOCKET
我的部分代码:
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的?
欢迎大家来讨论!