导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

对象序列化兼网络数据传输

dinglbo 2009-08-21 09:46:41
想把一个对象序列化后通过网络发送到另一台机子上,再反序列化解析成原对象。求源代码。思路也行!
欲快速上手!别笑话我懒惰!(本来第一次发由有100分可以给的,不小心把窗口关了,现在就只有15分了,郁闷中!)
...全文
68 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinglbo 2009-10-28
[Quote=引用 3 楼 conry 的回复:]
去看看这个吧
http://www.codeguru.com/cpp/i-n/internet/chatprograms/article.php/c6223__1

[/Quote]
谢谢分享!
回复
dinglbo 2009-08-22
[Quote=引用 2 楼 fuapolloqi 的回复:]
private Byte[] 转换实体为二进制(Object sendEntity)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new MemoryStream();
            formatter.Serialize(stream, sendEntity);
            //stream.Length;
            sendBt = new byte[stream.Length];
            sendBt = (stream as MemoryStream).ToArray();
            stream.Close();
            return sendBt;
        }
private Object 解码(Byte[] bytes)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new MemoryStream(bytes);
            try
            {
                string sTemp = System.Text.Encoding.Default.GetString(bytes).Trim();
           
            if(sTemp==" <STOP>")
            {
                isStop = true;
                return null;
            }
            Object obj = (Object) formatter.Deserialize(stream);
            stream.Close();
            return obj;
            }
            catch (System.Security.SecurityException)
            {
                MessageBox.Show("解码失败!", "错误");
                return null;
            }
        }
这两个函数实现了对象序列化和反序列化,通过Socket把序列化之后的二进制数组发出去,在接收端接收到这个数组后反序列化就可以得到发送的实体
[/Quote]

哥哥,这应该不是C++吧?
回复
TearyWang 2009-08-21
有一个叫CSocketFile的类,其构造函数要你指示一个CSocket,构造一个CSocket对象,传给他就OK。其余操作基本就是CArchive的啦。
回复
Conry 2009-08-21
去看看这个吧
http://www.codeguru.com/cpp/i-n/internet/chatprograms/article.php/c6223__1
回复
fuapolloqi 2009-08-21
private Byte[] 转换实体为二进制(Object sendEntity)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
formatter.Serialize(stream, sendEntity);
//stream.Length;
sendBt = new byte[stream.Length];
sendBt = (stream as MemoryStream).ToArray();
stream.Close();
return sendBt;
}
private Object 解码(Byte[] bytes)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream(bytes);
try
{
string sTemp = System.Text.Encoding.Default.GetString(bytes).Trim();

if(sTemp=="<STOP>")
{
isStop = true;
return null;
}
Object obj = (Object) formatter.Deserialize(stream);
stream.Close();
return obj;
}
catch (System.Security.SecurityException)
{
MessageBox.Show("解码失败!", "错误");
return null;
}
}
这两个函数实现了对象序列化和反序列化,通过Socket把序列化之后的二进制数组发出去,在接收端接收到这个数组后反序列化就可以得到发送的实体
回复
凤朝凰 2009-08-21
重写序列化函数,在里面调用winsocket发送出去就好了。
接收时同样饭序列化就好了。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……