Java,socket一包多少个字节, TCP问题! 从字节流中读取的数值不能大于0x7f否则就会变成65533?

    由于运行上面的代码需要一个服務器类因此,在加了一个类名为Server的服务器类关于服务端套接字的使用方法将会在后面的文章中详细讨论。在类Server类中只使用了Serversocket一包多少個字节类的accept方法接收客户端的请求并从客户端传来的数据中读取两行字符串,并显示在控制台上

图1  十进制整型322的二进制形式

    从图1可以看出,虽然322分布在了两个字节上但它的低字节仍然是66.

world.这种现象说明使用sendUrgentData方法发送数据后,系统会立即将这些数据发送出去;而使用write发送數据必须要使用flush方法才会真正发送数据。

    在Client类中向服务器发送"中国"字符串由于"中"是由214和208两个字节组成的;而"国"是由185和250两个字节组成的;因此,可分别发送这四个字节来传送"中国"字符串

我在java中用socket一包多少个字节读取server端發过来的二进制流从包头前面11个字节中读取包体的字节总数,然后再循环读取包体的字节数但当server端的数据字节比较大时就不能完全读過来 ,如从server端发送了 3万个字节这时client端程序就会不能完全读出server端的字节,可能只能读2万多个; 当字节数少于2000 以下时就基本没有出现过问題。
我把程序贴出来这段程序有什么问题么?接收大量的数据该如何处理为好
想了很久,没想明白是怎么回事望各位不吝赐教!!!

// 先收11个字节,函数解析出数据包长度

========= 上面的程序不知哪里有问题于是我就又优化了一下,代码如下但遇到大数据还是不能全读出来===================

// 先收11个字节,函数解析出数据包长度 // 分次取server端的数据即每次从流中取1024个字节,不足1024就一次取过来 //然后取剩余不足1024个的字节

我要回帖

更多关于 socket一包多少个字节 的文章

 

随机推荐