A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何圣东 于 2012-3-5 04:48 编辑

看《套接字网络编程_聊天室》视频,如以下附图:

byte[] arrMsgRec = new byte[1024 * 1024 * 2];//定义一个接收用的缓存区(2M字节数组)
socketClient.Receive(arrMsgRec);//将接收到的数据存入arrMsgRec数组
string strMsgRec = System.Text.Encoding.UTF8.GetString(arrMsgRec); //将Receive中的数组转成字符串

strMsgRec 字符串中存的是:你好啊\0\0\0\0\0\0\0\0\0...

调用ShowMsg方法,就相当于:你好啊\0\0\0\0\0\0\0\0\0...\0\0\0\r\n,后面也跟了\r\n,为什么不会换行呢???




               

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

5 个回复

倒序浏览
数组设置的太大了,当然你也可以获取添加字符串的实际长度来解决这一问题。
详细内容请继续看视频。。。
回复 使用道具 举报
int len=socketClient.Receive(arrMsgRec);
string strMsgRec=System.Text.Encoding.UTF8.GetString(arrMsgRec,0,len);
将while循环中的第2,3句替换了试试。
回复 使用道具 举报
朱小磊 来自手机 中级黑马 2012-3-7 08:28:53
板凳
?多线程那一块的视频就讲的这啊!貌似在第9篇!我也刚看过,二楼的解释能一解决你的问题,详细的就看视频吧~
回复 使用道具 举报
朱小磊 来自手机 中级黑马 2012-3-7 08:49:10
报纸
不好意思,我又看了一遍你的问题才发现你问的是为什么,而不是怎么做,关于为什么不会换行,我的解释如下:strMsgRec的字符串为“你好啊/0/0/0…,然后加上/r/n后就变成“你好啊/o/o/o.../r/n”,在把它显示到文本框中的时候,程序是一个字符一个字符的从字符中读出字符,当读到/o的时候程序会从此截断然后丢弃,已至于/o后的/r/n沒有读出就被丢弃了,/o其实就是个结束标识位~希望对你帮助。
回复 使用道具 举报
朱小磊 发表于 2012-3-7 08:49
不好意思,我又看了一遍你的问题才发现你问的是为什么,而不是怎么做,关于为什么不会换行,我的解释如下: ...

谢谢!:)                       
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马