我有这个TCP服务器运行因为UDP服务器能够接受大数据包但ISP阻止我的UDP数据包,即使我有公共IP和静态服务。但现在决定将其更改为TCP,但现在我有一个大堆栈来替换UDP到TCP。TCP如何在Java中发送/接收实时大数据包?
这里是服务器正在运行,但它并没有立即收到一个大包,我怎么能增加到无限或最大尺寸或等?
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。有任何想法吗!!
你得到一些具体的错误? – cdeszaq 2012-01-06 15:25:52
如果你想要一个面向消息的协议,这将为你处理消息边界,也许你应该寻找SCTP ... – lvella 2012-01-06 15:35:42