日期:2014-05-18 浏览次数:21144 次
/// <summary> /// 向客户端发送消息 /// </summary> /// <param name="strMsg"></param> public void Send(string strMsg) { byte[] arrMsg = System.Text.Encoding.UTF8.GetBytes(strMsg); byte[] arrMsgFinal = new byte[arrMsg.Length+1]; arrMsgFinal[0] = 0;//设置 数据标识位等于0,代表 发送的是 文字 arrMsg.CopyTo(arrMsgFinal, 1); sokMsg.Send(arrMsgFinal); }
------解决方案--------------------
下面mToProcess就是你想要的
int nBytesRec = sock.EndReceive(ar); //如果有接收到数据的话 if (nBytesRec > 0) { //将接收到的数据转个码,顺便转成string型 string sRecieved = Encoding.GetEncoding("utf-8").GetString(m_byBuff, 0, nBytesRec); //声明一个字符串,用来存储解析过的字符串 string m_strLine = ""; //遍历Socket接收到的字符 /* * * 此循环用来调整linux 和 windows在换行上标记的区别 * * 最后将调整好的字符赋予给 m_strLine * */ for (int i = 0; i < nBytesRec; i++) { Char ch = Convert.ToChar(m_byBuff[i]); switch (ch) { case '\r': m_strLine += Convert.ToString("\r\n"); break; case '\n': break; default: m_strLine += Convert.ToString(ch); break; } } try { //获得转义后的字符串的长度 int strLinelen = m_strLine.Length; //如果长度为零 if (strLinelen == 0) { //则返回"\r\n" 即回车换行 m_strLine = Convert.ToString("\r\n"); } //建立一个流,把接收的信息(转换后的)存进 mToProcess 中 Byte[] mToProcess = new Byte[strLinelen]; for (int i = 0; i < strLinelen; i++)