服务器端把List都打包好了,而且确实都是正确的好友信息,但是到客户端这边虽然List中的个数一样,但是这些都是一样的内容了,而且都是List中最后一个的内容,这是什么原因呢?如何解决呢?
服务器端的打包代码: DataSet dsf = new DataSet();
dsf = ms.getData("select * from Relation where userName = '" + DBacket.loginName + "'");
int friendsNum = dsf.Tables[0].Rows.Count;
MessageBox.Show("好友人数:" + friendsNum); myClassLibrary.MyFriend myFrid = new MyFriend();
List<myClassLibrary.MyFriend> frilist = new List<MyFriend>(); for (int idx = 0; idx < friendsNum; idx++)
{
myFrid.friendName = dsf.Tables[0].Rows[idx][1].ToString();
MessageBox.Show("这个好友是谁:" + myFrid.friendName); DataSet dsidx = new DataSet();
dsidx = ms.getData("select HeadPicture from UserInfor where UserName = '" + myFrid.friendName + "'");
myFrid.friendPicNo = dsidx.Tables[0].Rows[0][0].ToString();
MessageBox.Show("这个好友的头像索引:" + myFrid.friendPicNo);
frilist.Add(myFrid);
MessageBox.Show("这个好友在列表中的信息:" + frilist[idx].friendName + frilist[idx].friendPicNo);
} mySD.MySerializeFriendsList(frilist);
byte[] sendFs = mySD.myBuffer; netStream.Write(sendFs,0,sendFs.Length);客户端的接受代码 //接受来自服务器传来的好友列表信息
netStream.Read(recvBuffer,0,recvBuffer.Length);
mySD.MyDeserializeFriendsList(recvBuffer);
myfriendsList = mySD.friendList;
服务器端的打包代码: DataSet dsf = new DataSet();
dsf = ms.getData("select * from Relation where userName = '" + DBacket.loginName + "'");
int friendsNum = dsf.Tables[0].Rows.Count;
MessageBox.Show("好友人数:" + friendsNum); myClassLibrary.MyFriend myFrid = new MyFriend();
List<myClassLibrary.MyFriend> frilist = new List<MyFriend>(); for (int idx = 0; idx < friendsNum; idx++)
{
myFrid.friendName = dsf.Tables[0].Rows[idx][1].ToString();
MessageBox.Show("这个好友是谁:" + myFrid.friendName); DataSet dsidx = new DataSet();
dsidx = ms.getData("select HeadPicture from UserInfor where UserName = '" + myFrid.friendName + "'");
myFrid.friendPicNo = dsidx.Tables[0].Rows[0][0].ToString();
MessageBox.Show("这个好友的头像索引:" + myFrid.friendPicNo);
frilist.Add(myFrid);
MessageBox.Show("这个好友在列表中的信息:" + frilist[idx].friendName + frilist[idx].friendPicNo);
} mySD.MySerializeFriendsList(frilist);
byte[] sendFs = mySD.myBuffer; netStream.Write(sendFs,0,sendFs.Length);客户端的接受代码 //接受来自服务器传来的好友列表信息
netStream.Read(recvBuffer,0,recvBuffer.Length);
mySD.MyDeserializeFriendsList(recvBuffer);
myfriendsList = mySD.friendList;
版主您好:我按照您的提示改了改,可以了。在这里先谢谢啦,可是又有一个问题了。
就是在客户端反序列化的时候的一句:mySD.MyDeserializeFriendsList(recvBuffer);错误是:在分析结束之前遇到了流结束符。不知道是什么意思。 肯定多帮帮忙啊 谢谢啦