黑马程序员技术交流社区

标题: txtMsg.AppendText(msg + "\r\n")为什么不会换行??? [打印本页]

作者: 何圣东    时间: 2012-3-5 04:47
标题: txtMsg.AppendText(msg + "\r\n")为什么不会换行???
本帖最后由 何圣东 于 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,为什么不会换行呢???




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

谢谢!:)                       




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2