您的位置:首页 > 其它

.net Socket 外网连接内网 多客户端

2015-05-20 23:14 274 查看
本人是编程菜鸟,自学不到一年。由于项目中需要做个聊天及传送文件,才接触到这里。

在完全没有理论基础的前期,我思考了一番,决定利用sql服务器,换句话说,和socket完全无关。每次发送接收都去连接数据库。

后来不经意接触到socket。

看了一下 connect 和 accept没有复制黏贴任何代码,很快就做好了。

后来发现,这个方法只能是內网的。。。。。脑袋一下懵了。

到群里问下网友,群的共性就是活跃的都是提问题的,或者一知半解的人,真正懂的人从来是潜水。可以理解,毕竟上了道的人都在做项目,谁有空来给菜鸟们指导。

群里解答的朋友以及百度到的答案,几乎一样,只是讲需要服务器中转之类。其实这完全是废话。没接触过编程的人,稍微有点脑子,也知道需要服务器。不管他是不是为了中转消息,至少,如果没有一个IP固定的服务器,每台电脑都能上QQ,每个人也都在换电脑上QQ,如果直接相互连接,谁TM 知道彼此这会IP是多少,没有IP也就没有目的地。

这和我前期用SQL服务器中转是一个道理。

 

言归正传:许多和我一样的新手们,由于没有基础,于是局限在这一句代码

socket.connect(IP,端口)

但是就像A和B之间隔了一条河,B主动朝A放下了一只梯子,那么显然A没必要再去朝B搭一座桥,因为B伸向A的梯子两人都可以用。

于是

客户端Csocket.connect(W.IP.W.端口)   连接服务器W

服务器就可以这样利用该连接回复:

Wsocket..listen(10)

wWsocket=wsocket.accett()

wWsocket.send("客户端你好")

 

多客户端时,就属于逻辑的问题,在传递消息时,根据具体需求多加一些“标记”,定义连接对象数组,就可以区分不同客户端了。

就这么简单,不必纠结对方的IP,端口。这就是需要服务器的根本目的。当然,有了服务器还可以有其他诸多作用(我个人拙见)

许多大师,前辈们给予指点时,说真的,往往大话一大堆,却没有讲根本的东西。并不是需要你给出完整的代码,关键的一句甚至一个【单词】,往往就是它了!

不管怎么说,非常感谢前辈们,热心的朋友,否则我也始终走不出这个胡同。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: