• 基于dotnet2.0的联通sgip1.2协议二级网关源码



    作者:jll                       日期:2006-04-30
    出处:http://jll.cnblogs.com

    一、前言
            2005年7月下旬至8月中旬,我做了一个实现联通sgip1.2二级网关的项目,由于种种原因这个项目只完成了核心模块的2/5左右。此系统的源码几番周折,从硬盘转到邮箱,又从邮箱转到QQ网络硬盘。我想,应该赶在它“发霉”之前共享出来,一则可以让需要有的朋友作为参考; 二则或许可以得到相关朋友的指正,以此提高自已的水平。

    二、为什么要选择.net 2.0作为开发平台
             开始这个项目的时候,我有几个会用的平台或工具作为选择:
            (1) Delphi             这东东就不用说了,组件多,开发资料也丰富,Indy 开发网络程序就足够强大
            (2) C++ Builder    跟Delphi差不多,但是调用Socket API方便些
            (3) .net                 在多线程编程方面相对简单,同时对Socket也提供了很好地封装
            之所以选择.net, 一方面是看中它强大的多线程库的支持,另一方面则是为了体验一下.net的威力[当时(当然也包括现在)对.net不是很熟悉]。考虑到这个项目是应用在服务器端且服务器性能较好,而用户也不会反感装一个20多兆的Framework,所以俺选择了它。

    三、.net下socket编程的一些注意事项
            (1) 如何将一个结构体转换为byte[],或者如何将byte[]转换为相应的结构体
                 有3种方式可以作为选择:
                 a) 一是采用序列化的方式,在发送前将对象序列化成byte[], 通过socket转发之后再将byte[]还原
                 b)用BitConvert类来处理
                 c)使用Unsafe方式
                 三种方式的详细实现请参见我的这篇blog:   http://jll.cnblogs.com/archive/2005/07/23/198851.aspx

            (2) 网络字节顺序与主机字节顺的转换
                  在写socket程序时要注意,如果要发送整型(short, int, long等)类型的数据,需要将这些值转换成网络字节顺序后才后再发送,同时接收方也要将网络字节顺序的值转为主机字节顺序的。System.Net.IPAddress类提供了HostToNetworkOrderHostToNetworkOrder 来完成相应的功能。

           (3) 如何判断socket已经断开了
                 tcp的实现机制决定了这个处理这个问题的复杂性。 已连接的socket, 如果网络突然断开了或者是对方突然死机,tcp的默认实现机制是不能检测到这种情况的。然而,在.net下的Socket,即使你按照正常的程序来关闭Socket,它也不会有相应的事件或属性来告知您。
                我的这篇blog: http://jll.cnblogs.com/archive/2005/07/29/203090.html  较详细地叙述了这个问题。

    四、联通的sgip 1.2协议
            网上资料很多,请自行google或baidu,^_^

    五、程序源码及开发文档
           这篇blog的核心就在于这里(https://files.cnblogs.com/JLL/sgipSMG.rar)了, 包括整个源代码和开发文档。请阅读里面的 "开发文档.doc"  文件; 用vs 2005打开sgipSMG.sln后,在“解决方案资源管理器”下会看到4个项目,其中 "sgipSMG 项目" 为核心代码所在。
           需要的朋友请下载之。

    good luck and have a good day!
         

  • 相关阅读:
    Gin 框架的使用
    Beego model 增删改查
    Beego 搭建
    Go 如何快速解决依赖管理问题
    Go 语法基础
    使用vue控制元素显示隐藏
    Vue 刷新页面方式 和页面跳转的方式
    如何让nginx 显示文件夹目录
    Vue(项目配置iview的upload插件上传文件 )+ Python flask 上传文件
    uwsgi 常见配置
  • 原文地址:https://www.cnblogs.com/JLL/p/387346.html
Copyright © 2020-2023  润新知