【发布时间】:2012-01-06 15:23:01
【问题描述】:
我有这个 TCP 服务器正在运行,因为 UDP 服务器能够接受大数据包,但即使我有公共 IP 和静态服务,ISP 也会阻止我的 UDP 数据包。但现在决定将其更改为 TCP,但我现在有一个大堆栈要替换为 UDP 到 TCP。
这是正在运行的服务器,但它没有立即接收到大数据包,我怎样才能将它增加到无限或最大大小等?
1) 有什么办法吗?
public void run()
{
while(true)
{
byte[] buf=new byte[5024]; <<< not helping!!
int bytes_read = 0;
try {
bytes_read = sockInput.read(buf, 0, buf.length);
String data = null;
data = new String(buf, 0, bytes_read);
System.out.println("[TCP]: incomeing data: " + bytes_read + " bytes, data=" +data);
}
}
2) 有什么办法吗?
public TCPHandler(Socket sock) throws IOException
{
sock.setReceiveBufferSize(10*1024 +1024); //<<<<< not helping !!!
sock.setSendBufferSize(10*1024+1024);
this.sock = sock;
sockInput = sock.getInputStream();
sockOutput = sock.getOutputStream();
this.myThread = new Thread(this);
}
没有允许我处理大数据,以便我可以从 UDP 切换到 TCP。有什么想法!!
【问题讨论】:
-
您是否遇到了一些特定的错误?
-
如果你想要一个面向消息的协议,它会为你处理消息边界,也许你应该寻找 SCTP...
标签: java linux networking windows-7