与socket实现的序列化相关的问题... [英] Problem related with Serialization implemented with socket...

查看:94
本文介绍了与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆