新人问题:
实现类似与QQ私聊问题:
两个Socket如何通信,在建立连接的时候,可以由ServerSocket介入一下,建立完后两个Socket就可以相互通信,而不经过服务端;求思路或百度上的学习资料
ps:UDP方式的话,就不用介绍了,只想用Socket
三天内都在线等,谢谢各位先啦
------解决方案--------------------
Server 起到转发的作用,就是你收到信息client的信息还有发送地址,通过地址再发给另一个client。
否者就是所有的端 既可以做client 又可以做server。
------解决方案--------------------
看看P2P
若不用SERVER的话
只能固定IP和PORT
------解决方案--------------------
先用tcp,从服务器上两个人都知道了各自的地址后再用udp
然后就没有别的办法了
------解决方案--------------------
其实是楼主对ServerSocket与Socket的理解问题,如果是两台机器在通信的话,不存在转发问题,只需要将其中一台机器运行ServerSocket,另一台机器与其联接,之后进行P2P通信就可以了,只要你的ServerSocket是单线程的,在两台机器断开前,就不会与第三台机器联接,应该就可以达到楼主的要求了。
------解决方案--------------------
其实是楼主对ServerSocket与Socket的理解问题,如果是两台机器在通信的话,不存在转发问题,只需要将其中一台机器运行ServerSocket,另一台机器与其联接,之后进行P2P通信就可以了,只要你的ServerSocket是单线程的,在两台机器断开前,就不会与第三台机器联接,应该就可以达到楼主的要求了。
------解决方案--------------------
sockets 协议是要经过三次握手的。两个socket不可以通信
除非在建立一条新的scoket。
也就是2楼讲的方法
------解决方案--------------------
其实你是用语错误了. 让周围人不是很能明白你的意思. 很多技术都有专门的术语.术语对于交流很关键.
你说的问题在现实环境中就是P2P技术要去解决的问题 , 网上资料很多, 像UDP型的P2P基本上有直接可用的代码了. TCP型的代码不多,但是原理上已经讨论的很透彻了. 搜索下P2P吧. 祝好运.
另外2个socket是不可以通信的(按你的说法),一个TCP socket的定义就决定了IP 和端口号,不存在什么把2个socket连起来的说法.(读一下TCP/IP详解 第一卷 就能很快明白所有的这一切了). 不使用P2P技术的话,在用户几乎都是通过NAT上网的情况下,互相发消息是肯定要服务器转发的.
------解决方案--------------------
总感觉楼主的想法不符合网络协议的定义,一个套接字就是一对主机端对端的连接,怎么可能硬把两个套接字的两头接在一起呢?而且不管是哪方先发起的通信,两方都可以互相发送信息 。。。不需要建立两个套接字。。。
------解决方案--------------------
巧了
我最近两天也打算有空弄弄这个
能实现局域网通信的东西
我是这么想的
为什么要两个SOCKET 直接通信呢?
QQ不也是必须 两个人都能上网才能通信的么
不能俩人 上QQ的时候都连着网 只要登录了 QQ后 网线 一拔 ,俩人都在 一个局域网里 就能通信
这样是不合理的
ClientA连接到 SERVER后 ,如果想跟ClientB通信
ClientA只需把通信内容和目的地址(ClientB)发送给Server,
Server来解析这个自定义的协议 ,就知道ClientA要发的目的地址和发的内容了
这样每次都走一遍Server应该就能实现LZ说的 “私聊” 问题了吧
我就用这个思路,打算这几天有空把它弄出来
我也新手 说得不一定对啊~共同学习进步
------解决方案--------------------
flowerjack:
其实socket就是一个IP和端口 对, 本质上其实不存在socket这个玩意. 建议你看下<tcp/ip详解 第一卷的相关章节> 花不了多少时间,专心点,一个星期就可以看完整个第一卷,要理解这部分内容,半个星期就足以了. TCP/IP协议方面,这书基本属于无敌状态,十几年来,业界几乎没有第2本相关内容的书籍了(UNIX 网络编程 除外). 因为这一本太经典了.
看完那本书,再加上网络上对P2P技术详细的文章和代码,我相信你压根不需要再看这个帖子了.