ServerSocket server = new ServerSocket(30000);    
Socket socket = server.accept();    
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());    
FileInputStream fis = new FileInputStream("C:/sunnyTest/picture/cat01.jpg");    
int size = fis.available();  
              
System.out.println("size = "+size);  
byte[] data = new byte[size];    
fis.read(data);    
dos.writeInt(size);    
dos.write(data);    
              
dos.flush();      
1、TCP链接,一次传输的数据包没有限制,一个报文段的大小是由接收方给出的窗口值和当前网络拥塞程度决定的,一个数据包会发多次报文段,是么?
2、将数据写入 DataOutputStream ,dos.write(data),这里的dos有大小限制么?
3、如果dos有限制,它受限于什么?
4、dos.flush();  将缓冲区数据强行输出,清空缓存,这是什么意思?
5、发送报文段的过程是发生在write之后,边写边传?还是发生在flush()之后呢???
6、我现在的理解是:TCP,A发送数据,B接收,A发送一个报文段之后,B收到,给A发送确认,在确认中包含确认号和窗口大小信息,如窗口20,确认号31,那么A就会构造一个31到50的报文段,将此报文段发送!所以回答第二个问题“没限制”,所以回答第五个问题“发生在write之后”,所以回答第四个问题“在flush之前,数据已发送完毕,此操作只为清空数据缓冲区”。对么?求解~TCPDataOutputStream大小限制报文段flush