2 u011665766 u011665766 于 2014.11.20 16:47 提问

求教一个设计聊天软件的问题~

打算做一个聊天软件,本想模拟飞秋那样,知道不用用到服务器来作为中间传输工具,后来参考很多资料都是基于c/s模式的设计~搞得我现在有点混淆概念,上网查资料大家对服务器的概念好像不太一样,到底可不可以实现不用服务器只有两个客户端来通讯的系统呢?请教各路大神给点建议~~~

6个回答

caozhy
caozhy   Ds   Rxr 2014.11.20 16:59
已采纳

除非在一个局域网这样简单的场合使用广播,否则服务器是必不可少的。即便你使用P2P方式通讯,服务器还是需要存在的,用于账户验证、好友列表、上线、下线、获取对方IP、建立连接等等。

u011665766
u011665766 回复caozhy: 嘿嘿,应该是啦~楼下说飞秋的服务器可能只是一个类,你觉得呢?我不太明白
接近 3 年之前 回复
caozhy
caozhy 回复u011665766: 自动扫描应该是对广播的一种通俗叫法。
接近 3 年之前 回复
u011665766
u011665766 回复caozhy: 飞秋上线后会自动扫描上线的人,如果所有人都改了备注,这样也可以不用输ip?
接近 3 年之前 回复
caozhy
caozhy 回复u011665766: 不是说不行,而是直接通过IP不方便。你比如想和张三聊天,你还得在聊天前先问下他的IP是多少,然后输入到你的程序中才能聊。
接近 3 年之前 回复
u011665766
u011665766 回复caozhy: 像飞鸽那样,直接通过ip,不注册不行么
接近 3 年之前 回复
caozhy
caozhy 回复u011665766: 每个客户端维护一个用户名和IP的对应列表,用户上线、下线使用UDP广播,通知网段所有的机器,每个客户端接收到后再更新自己的列表。特别是,因为没有服务器端,客户端的身份仿冒的问题解决不了。
接近 3 年之前 回复
u011665766
u011665766 回复caozhy: 恩恩,确实是如此,没有中间人确实很复杂,不知道你清不清楚怎么弄?
接近 3 年之前 回复
caozhy
caozhy 回复u011665766: 因为你是找人聊天的,而程序是找IP通讯的。你必须有一个人和机器的对应,当然,你可以让客户端自己协商,但是代码肯定复杂。
接近 3 年之前 回复
u011665766
u011665766 回复caozhy: java
接近 3 年之前 回复
u011665766
u011665766 回复caozhy: 木有排斥服务器了,只是这是小组作业,之前其他组员写文档的时候已经写成这样了,只能一条路走到黑了~~但是我真的没见过不用服务器的例子~~所以不太清楚
接近 3 年之前 回复
caozhy
caozhy 回复u011665766: 不知道你使用什么语言,但是实现这样一个系统并不难,没必要排斥服务器,它反倒可以帮助你简化编程。
接近 3 年之前 回复
u011665766
u011665766 若仅限于一个组内小区域的,希望有发送消息和传输文件的功能,如何实现最简单?
接近 3 年之前 回复
yttccx2009
yttccx2009   2014.11.20 16:52

两个客户端连接的建立需要服务端,之后聊天消息就不需要服务端了。

u011665766
u011665766 没有服务器是不是就无法连接了?不能通过其他方法么?
接近 3 年之前 回复
u010637650
u010637650   2014.11.20 17:08

我觉得可以啊 两个客户端 都用一样的 代码 不就行了嘛。。。。。。
即是服务器 又是客户端。。。。。。。
。。。。。。。。。。。

u011665766
u011665766 这行得通吗?我觉得没有服务端来连接双方不能通吧
接近 3 年之前 回复
hello_1218
hello_1218   2014.11.20 17:40

在局域网就可以,直接通讯就可以了

u011665766
u011665766 可否请教用到哪些接口?怎么实现?
接近 3 年之前 回复
ata15
ata15   2014.11.20 17:44

feiQ 你看他是一个程序,其实他就包括了服务器的功能,只不过大多都是接口监听。服务器可能只是一个java类。

u011665766
u011665766 我不太明白~
接近 3 年之前 回复
u011731233
u011731233   2014.11.20 19:00

还没见过不用服务器的,除非云计算真的发展到。。

Csdn user default icon
上传中...
上传图片
插入图片