黑马程序员技术交流社区

标题: 刚看线程,与套接字视频时发现一点怎么也看不懂 [打印本页]

作者: 冯雅伦    时间: 2012-8-22 12:52
标题: 刚看线程,与套接字视频时发现一点怎么也看不懂
在黑马学习视频中,老师演示如何将服务端的数据发送到客户端。老师先是建立了一个2M的字节空间,然后在客户端用Recevice的方法接受。再然后对其进行转码将字节转换成字符串,并用Append的方法在字符串后面加了一个换行符,结果程序运行没有换行。老师解释说是因为,在转码中,将字节后面的空内容也进行了转码变成了“/0”。但我还是不懂为什么,这样就不换行了,这个“”/0与没换行又有什么联系。下面是老师的客户端代码:


{
        byte[] arrMsgRec = new byte[1024*1024*2];//建立一个2M的字节数组
        socketClient.Recevice(arrMsgRec);
        string strMsgRec = System.Text.UTF8.GetString(arrMsgRec);
        ShowMsg(strMsgRec);
}


void ShowMsg(string msg)
{
        txtMsg.AppendText(msg+"/r/n");
}

其中只列出了相关代码,全部代码视频上有,我就不打了。望各位高人指点迷经!!!

作者: 许庭洲    时间: 2012-8-22 13:28
对其进行转码时候, 将空格转换成加号('+')试试看,这是老外惯用办法。
string strMsgRec = System.Text.UTF8.GetString(arrMsgRec);
strMsgRec = strMsgRec .Replace("+", "%20");
作者: 冯雅伦    时间: 2012-8-22 17:48
许庭洲 发表于 2012-8-22 13:28
对其进行转码时候, 将空格转换成加号('+')试试看,这是老外惯用办法。
string strMsgRec = System.Text.UTF ...

是一定要转码才能实现通信功能么,如果不进行转码能不能实现客户端与服务器直接的通信?如果不能,原因是因为流传输必须以字节的方式进行的么




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