关于c#编写的聊天软件,服务端在具有公网ip一端,客户端在不同的内网,那么不同的客户端之间如何进行通讯?
最近在做一个类似于qq的通讯软件。最基本的需要就是和qq一样,可以发聊天信息,图片,文件。如果这些都是局域网通讯软件的话,应该不是很难。可是偏偏要不同的客户端在不同的内网之间可以进行通讯,我使用的是udp协议,因为好多人告诉我需要用到udp穿透,不同内网间通信。网上例子很多,可以用的不多,还有好多都是其他语言编写,想求一份c#的demo,有做过相关程序的大神望帮忙! --------------------编程问答-------------------- 还有,udp穿透,不同的客户端在同一个nat后,不同的nat后,多层nat后,这些情况在代码中是否是需要分情况处理,不要给我讲解udp打孔的概念,该查的我都查过了。 有些实际的代码最好!本人qq:1225119390 给指导一下,或者发个示例代码(邮箱:1225119390@qq.com),有大神帮忙,感激不尽。 --------------------编程问答-------------------- 这几个网络在一个大的局域网内部,还是分别在互联网的不同地方,也就是说这几个网络互联是如何一个形式
--------------------编程问答-------------------- 先确保IP可达 --------------------编程问答-------------------- 我可以告诉你:你不应该使用udp。
网上所谓的udp穿透的文章,有95%以上都是某些人抄别人的文章、而自己甚至都没有实际实际用在产品的任何经验就开始写博客了。
qq也不过是在个别功能上使用udp,特别是根本不需要“打洞”的地方才用。例如在登录时,既使用udp、也使用tcp和http,根本不是仅仅用udp。而任何稍微重要的功能,例如传送文件,则根本就是tcp的,绝不是udp的。
使用tcp,那么任何“内网”客户端都可以跟服务器进行双向通讯。因此如果服务器要向客户端发送消息,瞬间即到了。两个客户端可以首先尝试直接通讯,如果不通则可以通过服务器中转,这全都使用tcp就足够了。 --------------------编程问答-------------------- 说什么“QQ在内网是udp打洞的”这是一些人幻想出来的,没有真凭实据。
我能看到的证实仅顶多是,QQ使用udp访问服务器,然后通过服务器转发给另一个客户端。
而当QQ在内网中尝试做一些优化,意思是尝试直连另一个客户端(客户端内部也有简单的服务程序),这跟什么udp没有必然的联系,而且也根本不是打洞。 --------------------编程问答-------------------- udp打洞 确实是可以滴,但是涉及到路由器的配置等问题, 所以很多人打洞不成功
--------------------编程问答-------------------- 谁也没有说“不可以”。其实这是很简单的东西,就好像我说“我可以每周换一个女朋友”对于外人来说也是可以的。其实如果那样,我早就死了。
我用QQ的例子,因为我做过真正的(至少)几千万用户的IM。我倒是很想知道网上忽悠之后,有哪些证据证明QQ是依靠什么“udp打洞技术”来获得半点产品优势的? --------------------编程问答-------------------- sp1234 大神,留下qq,好不???加我1225119390 --------------------编程问答-------------------- 倦怠,这几个网络在互联网的不同地方啊! --------------------编程问答-------------------- 通过公网转发或者udp打洞。 --------------------编程问答-------------------- sp1234大神快加她QQ吧,是妹子哦,可以视频指导的 --------------------编程问答-------------------- 關注..... --------------------编程问答-------------------- 不做路由配置的情况下,目前IPv6没有完全普及,还是老老实实打洞穿透吧。
不同的客户端在同一个nat后, 这种情况不需打洞。
对于多层nat, 这种情况不需分开处理。
补充:.NET技术 , C#