惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 楚潇

有关sqlserver的锁 .net winform下TreeNode在没有子结点时也显示+号的解决办法 在vs2005中用gridview显示表中的image字段 - 楚潇 - 博客园 谁没在变! vs2k5 中asp.net "Web Site Administration Tool "使用中遇到的问题 - 楚潇 美达飞凡16X DVD起死回生记 寄语八十年代的新一代 小胜凭智, 大胜靠德 《windows核心编程》 再读<心航> visual C# 2005 express beta2读配置文件的问题(ms的bug?) C#中判断socket是否已断开的方法 将对象转为byte[] 摘自古龙的句子 端午节到了 C#中的字符串格式化 .net开发手机短信 怎样才能提高.net的水平呢? Reflaction很嚣张的功能
基于dotnet2.0的联通sgip1.2协议二级网关源码
楚潇 · 2006-04-28 · via 博客园 - 楚潇

作者: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类提供了HostToNetworkOrder 、HostToNetworkOrder 来完成相应的功能。

       (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!