因为初学C#,学到网络通信这就混乱了,还请大神赐教! |
|
1分 |
Socket、wcf、webservice都可以。
|
我想弄客户端的,可以详细点吗? |
|
5分 |
简单来说,你的两个电脑需要访问一台位于外网的服务器进行登录。它们登录时同时提交自己的内网地址。
然后内网的机器可以相互间首先使用对方的内网IP进行访问,使用服务器分配的授权号进行相互核对。如果可以对上授权号,那么就可以直接通讯;如果对不上,那么通过外网服务器转一下消息进行通讯。 |
5分 |
如果是刚开始设计通讯方面程序,那么你使用服务器转发这一种形式也就够了。假设客户端跟服务器是长连接双工通讯的,那么你的通讯信令就应该可以区分是客户端到服务器还是从服务器到客户端的消息(例如使用id号>0和<0作为区分),服务器可以随时向客户端发送消息。当一个客户端发送消息给服务器,服务器判断这只是一个“路由消息”,于是它找到对方所在的Client通道,然后发送出去就行了,服务器处理这种动作不需要耗费基本毫秒的时间,也很快。
|
4分 |
给楼主几个链接,看了 就很清晰明了了
http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html |
1分 |
你需要使用Socket打开一个链接的通道进行传输
|
1分 |
要在路由做端口映射
|
各位大神,还不够详细啊。。。
|
|
1分 |
随便去下载类似聊天软件的例子自己研究就行了
|
10分 |
两个都在内网的主机需要通讯:
1.先打洞 那么你所有发送给 222.30.64.111:55555 的数据包 全部会转给 内网中 192.168.1.100:55556 |
6分 |
如果只是自己测试 建议使用第二种 第一种没有成熟的设计的话 根本不稳定 很容易失效
|
4分 |
NAT打洞,适用于两端都是在内网的情况。因为第一次发送通讯请求,目标必须在公网上,所以通常来说,两端都在内网谁也无法发起连接,更不要说通讯了。
NAT打洞就是依赖一台服务器作为中转,让一个客户端和这个服务器通讯,另一个客户端通过实现和这个服务器建立的连接获得前一个客户端的端口、IP,然后服务器把控制权交给客户端,使得两个内网的客户端不再需要服务器中转就能直接通讯。 |
1分 |
光有IP和端口还是不行的,你需要一种传输层的协议。通常来说有TCP和UDP两种协议。对于TCP协议,需要三次握手的过程,你结合教材自己先了解下。再在网上找例子程序看。
|
各位大神,我把两台电脑,其中一台通过路由器映射了,也就成为了所为的服务器了,另一台也就是处在内网的,也就是我们平时一般人的电脑,也就是客户端了,那么客户端是可以向服务器发送消息,而且我通过编程发现,客户发来的消息的IP就是它外网的IP,但是端口每次都在改变,我服务器回发给那个IP和端口,结果客户端没收到消息,怎么回事?
我服务器该如何回复消息,如何准确的发给这个处在外网的机器,还请详细点。。。 |
|
1分 |
Socket
|
还望楼主求解?
|
|
请问问题解决了没? 求源代码。谢谢!
chenyuncpp@126.com |
|
嗨,说那么多,又是打洞什么的。LZ已经说了做了端口映射了。
但就没人说到点上,其实有些问题,不用说,给一段实例代码,哪怕是不成熟的几句代码 都比说那么多更形象 |