日期:2014-05-20  浏览次数:20758 次

LINUX创建套接字的发送接收缓存的大小

protected static final int m_iMaxSize = 20480;
protected static DatagramSocket m_socket;
protected static int m_timeout = 3000;
protected static int m_Port = 5555;
protected static String m_Ip ="192.168.30.5";
private static byte[] datarecv = new byte[m_iMaxSize + 120];
/**
 * @param args
 */
public static void main(String[] args) {
try {
m_Ip = args[0];
send s = new send();
m_socket = new DatagramSocket(m_Port, InetAddress.getByName(m_Ip));
int b = m_socket.getSendBufferSize();
int rb = m_socket.getReceiveBufferSize();
System.out.println("default SendBufferSize=" + b);
System.out.println("default ReceiveBufferSize=" + rb);
m_socket.setSendBufferSize(m_iMaxSize*1000);
m_socket.setReceiveBufferSize(m_iMaxSize*1000);
System.out.println("set SendBufferSize="+m_socket.getSendBufferSize());
System.out.println("set ReceiveBufferSize="+m_socket.getReceiveBufferSize());

s.start();
} catch (Exception e) {
System.out.println(e.toString());
}

}

WINDOWS平台运行结果
default SendBufferSize=65536
default ReceiveBufferSize=65536
set SendBufferSize=20480000
set ReceiveBufferSize=20480000

LINUX平台运行结果
default SendBufferSize=64512
default ReceiveBufferSize=64512
set SendBufferSize=131071
set ReceiveBufferSize=131071


LINUX设置套接字缓存有上限?

------解决方案--------------------
lz 霸气。
UDP每个传送包上限跟系统有关,没有统一标准,各家只是约定了一个最小值。
由于UDP的不可靠,一般传包小于等于512字节。