为了账号安全,请及时绑定邮箱和手机立即绑定

Socket 问题,目标长度数组不够,是怎么回事?怎么修改呢?

Socket 问题,目标长度数组不够,是怎么回事?怎么修改呢?

陪伴而非守候 2018-12-06 14:11:44
这段代码是 获取http 的图片数据,可是总是出现目标 数组程度不够用? 不知道怎么回事? /// <summary> /// 得到网页原始字节数组 /// </summary> /// <param name="strHost">主机头</param> /// <param name="getBytes">Get字符串的字节数组形式</param> /// <param name="iTotalCount">接受的字节数</param> /// <returns>原始网页字节数组</returns> private byte[] GetHtmlOriginByte(string strHost, int port, byte[] getBytes, out int iTotalCount) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(strHost, port); socket.Send(getBytes); byte[] buffer = new byte[256]; int iNumber = socket.Receive(buffer, buffer.Length, SocketFlags.None); iTotalCount = iNumber; byte[] responseBytes = new byte[iTotalCount + iNumber]; buffer.CopyTo(responseBytes, 0); while (iNumber > 0) { iNumber = socket.Receive(buffer, buffer.Length, SocketFlags.None); if (iTotalCount + iNumber >= responseBytes.Length) { //重新生成个更大的数组 byte[] temp = new byte[responseBytes.Length * 2]; //原数据copy到新数组中 responseBytes.CopyTo(temp, 0); buffer.CopyTo(temp, iTotalCount - 1); responseBytes = temp; //引用变更 } else { buffer.CopyTo(responseBytes, iTotalCount - 1); } iTotalCount += iNumber; //索引位置增加 } return responseBytes; }
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

"目标数组长度不够"的异常多数是因为 Array.Copy 或 CopyTo 方法 中 要拷贝的数据长度超过了目标数组的长度所致.

查看完整回答
反对 回复 2019-01-21
?
郎朗坤

TA贡献1921条经验 获得超9个赞

那到底怎么解决的啊。。。~

查看完整回答
反对 回复 2019-01-21
  • 2 回答
  • 0 关注
  • 546 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信