与socket实现的序列化相关的问题... [英] Problem related with Serialization implemented with socket...
问题描述
hii,我正在做的是在服务器端序列化数据,当我在客户端接收数据时,我将其反序列化。
代码片段::
服务器
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
int rcv;
IPEndPoint iep = new IPEndPoint(IPAddress.Any,8088);
socket.Bind(iep);
socket.Listen(100);
//套接字manSocket = socket.Accept();
套接字manSocket;
while((manSocket = socket.Accept())!= null)
{
object obj = null;
byte [] data = new byte [1024 * 500];
rcv = manSocket.Receive(data,data.Length,SocketFlags.None);
Console.WriteLine(" received:{0}",Encoding.ASCII.GetString(data,0,rcv));
obj =(object)wmi Info.Collect();
data = Serialize(obj);
manSocket.Send(data);
manSocket.Close();
客户端
__remote = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType .Tcp);
IPEndPoint remoteEp = new IPEndPoint(_ip,_ port);
_remote.Connect(remoteEp);
const string info =" send me info";
byte [] data = Encoding.ASCII.GetBytes(info);
对象returnObj = null;
_remote.Send(data,data.Length,SocketFlags.None);
while(true)
{
data = new byte [1024 * 500];
int rcv = _remote.Receive(data);
if if(rcv == 0 ){
break;
}
returnObj =反序列化(数据);
返回returnObj;
返回returnObj;
这些是我程序的两小段代码,它们只是实现socket,序列化和反序列化。没有我的问题是
问题::
当m运行代码和请求服务器向我发送序列化数据。然后......我第一次在反序列化后获得正确的数据,但是当我再次尝试(或再次请求数据或第二次)到服务器时,我在客户端得到不同的数据.. 。
我在哪里得到问题可以任何人帮助我。
谢谢你。
hii,
what i am doing is that serializing data at server side and when i receive data at client side i deserialize it.
code Snippet ::
Server
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
int rcv;
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 8088);
socket.Bind(iep);
socket.Listen(100);
//Socket manSocket = socket.Accept();
Socket manSocket;
while((manSocket=socket.Accept())!=null)
{
object obj = null;
byte[] data = new byte[1024 * 500];
rcv = manSocket.Receive(data, data.Length, SocketFlags.None);
Console.WriteLine("received : {0}", Encoding.ASCII.GetString(data, 0, rcv));
obj = (object)wmiInfo.Collect();
data = Serialize(obj);
manSocket.Send(data);
manSocket.Close();
Client
_remote = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint remoteEp = new IPEndPoint(_ip, _port);
_remote.Connect(remoteEp);
const string info = "send me info";
byte[] data = Encoding.ASCII.GetBytes(info);
object returnObj = null;
_remote.Send(data, data.Length, SocketFlags.None);
while (true)
{
data = new byte[1024 * 500];
int rcv = _remote.Receive(data);
if (rcv == 0)
{
break;
}
returnObj = Deserialize(data);
return returnObj;
}
return returnObj;
These are the two small piece of code of my program which are just implement the socket and serialization and deserialization.no my problem is
Problem ::
when m running the both the code and request server to send me serialized data. then ...... at the first time i get the correct data after deserialization
BUT when i tried again (or again request for data or Second Time) to server then i get the different data at client end...
where am i getting the problem can any one help me???
thank you.
推荐答案
您需要消息框架: http://nitoprograms.blogspot.com/2009/04/message-framing。 html
-Steve
You need message framing: http://nitoprograms.blogspot.com/2009/04/message-framing.html
-Steve
这篇关于与socket实现的序列化相关的问题...的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!