gpt4 book ai didi

java - TCP如何在Java中发送/接收实时大数据包?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:10 25 4
gpt4 key购买 nike

我有这个 TCP 服务器正在运行,因为 UDP 服务器能够接受大数据包,但即使我有公共(public) 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。任何想法!!

最佳答案

TCP 和 UDP 是不同的。 TCP 不是基于数据包的协议(protocol),它是基于流的协议(protocol)。您的数据将按顺序到达且未损坏,但不一定会同时到达。

您应该做的是在每个集合“数据包”前加上一个长度。当您接收数据时,首先读取长度值,然后继续从套接字中读取 block ,直到您拥有所需的数据量。

关于java - TCP如何在Java中发送/接收实时大数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8760109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com