byte[] buf = new byte[200000];//缓存区定义
StringBuilder str = new StringBuilder();//定义一个可变字符串长度的实例
socket.Receive(buf);//接受数据
string receiveMsg = Encoding.UTF8.GetString(buf);//转换为字符串
Array.Clear(buf, 0, buf.Length);//清空数组里面的数据
string Nike = "字符串1";
str.Append(Nike);//将字符串追加进去
str.Append("字符串2");
str.Append(receiveMsg);//加接受过来的字符串追加进str
MessageBox.Show(str.ToString());//显示全部数据//问题就出现在MessageBox.Show(str.ToString());这句,弹出的信息框只显示字符串1。好像后面的字符串都会丢失一样!!!到底是什么原因呢?请高手们支招!!!按理说应该是显示“字符串1字符串2接受的数据”这样 可是现在只是显示“字符串1“
StringBuilder str = new StringBuilder();//定义一个可变字符串长度的实例
socket.Receive(buf);//接受数据
string receiveMsg = Encoding.UTF8.GetString(buf);//转换为字符串
Array.Clear(buf, 0, buf.Length);//清空数组里面的数据
string Nike = "字符串1";
str.Append(Nike);//将字符串追加进去
str.Append("字符串2");
str.Append(receiveMsg);//加接受过来的字符串追加进str
MessageBox.Show(str.ToString());//显示全部数据//问题就出现在MessageBox.Show(str.ToString());这句,弹出的信息框只显示字符串1。好像后面的字符串都会丢失一样!!!到底是什么原因呢?请高手们支招!!!按理说应该是显示“字符串1字符串2接受的数据”这样 可是现在只是显示“字符串1“
{
while (true)
{
string Nike;
byte[] buf = new byte[200000];
StringBuilder str = new StringBuilder();
socket.Receive(buf);
string receiveMsg = Encoding.UTF8.GetString(buf);
Array.Clear(buf, 0, buf.Length);//清空数组里面的数据
Nike = Arr[socket];//自定的一个索引器用来获得昵称的。只要加上这句程序就会出现上面所说的情况。str里面最后只剩下Nike。其他的数据都会丢失!
str.Append(Nike);
str.Append("说: ");
//Thread.Sleep(20);
str.Append(receiveMsg);
MessageBox.Show("收到信息 " + receiveMsg);//这里将str里面的数据显示出来! }高手帮忙看看啊!!!谢谢
没有。我试了下,只要把下面这句注释掉,或者换成Nike = ”dddddd“(直接赋值)就没有出现我说的丢失后面字符串的情况!就是这句
Nike = Arr[socket];//自定的一个索引器用来获得昵称的。只要加上这句程序就会出现上面所说的情况。str里面最后只剩下Nike。其他的数据都会丢失!
socket.Receive(buf);//接受数据
byte[] buf = new byte[2] ; // 定义一个缓冲区
socket.Receive(buf, socket.Available, 0); // 获得接收到的字节数
buf = new byte[socket.Available]; // 根据字节数分配缓冲区
socket.Receive(buf, socket.Available, 0); // 读回所有数据
接收端是把所有在通讯缓冲区中的未读取字节全都读取出来,累积在一起(比如在一个memorystream中),然后当缓冲区中的数据为0时,你的程序才应该去从这个累积的数据中逐一分析每一个单独的消息并进行处理。
byte[] buf = new byte[20000] ;实际上可能用不了那么大 也可能超过了这个范围
socket.Receive(buf);//接受数据我把byte[] buf = new byte[10];
那么如果传过来的数据大于10了 那岂不是容纳不下了????如何理解您的上面的这句话呢?