首页 > 编程知识 正文

搭建网页聊天室,java聊天室实现原理

时间:2023-05-04 08:28:43 阅读:118911 作者:3697

虽然Java不适合开发桌面APP,但一定有办法

此回答的对象是能进行Java Awt/Swing和其他框架,能进行Java IO/NIO技术的童鞋~

首先,考虑使用:客户端图形界面中最简单的Swing技术通信来使用TCP连接(Java IO或Java NIO )

服务端首先显示一个窗口,根据输入的端口号打开服务器套接字并绑定到此端口

然后在服务端无限循环接收客户端的连接请求(accept方法)。

每次我们收到连接请求,我们都会向这个客户端签订新合同。 我们与客户端之间,客户端会将连接后客户端从服务端收到的第一条信息告知自己的用户名。 当然,每次客户端发送消息时,都可以使用分隔符直接解析用户名和消息。 )获取用户名后,保存该用户名、套接字和其他连接,并保存在一个集合中。 在这个新线程中,不断接收来自客户端的消息。 每次读一条消息,我们都会向集合中的所有连接发送一条消息。 例如,xxx发送了xxx消息

最后,我们将关闭它,以免僵尸进程在客户端关闭套接字或意外断开连接

我们在SocketChannel或InputStream中读取时,如果对方没有消息,read请求通常会阻止线程,所以我会记住。 为要读取的工作创建新线程! 如果未阻止,返回值为-1,如果是缓冲读程序,则返回null。 这意味着客户端关闭了连接。 在这种情况下,必须关闭连接并将其从集合中删除,然后中断处理连接的相应线程。 NIO的情况很简单。 也可以抛出异常并执行以下操作,但旧的IO需要自己判断

如果我们读信息时报说发生了IOException异常,就意味着连接意外终止。 在这种情况下,也必须关闭连接并退出相应的线程

客户端和服务器端一样,要首先显示窗口,必须首先根据输入的IP地址和端口打开窗口并连接到相应的服务器

连接成功后,可以将新窗口放入滚动框和输入框中。 现在,服务器发送自己的名字后创建新线程,或者直接在主线程上无限循环运行,读取服务器发来的消息,打印在这个滚动框上接收我们的输入框的事件日期是simppy 可以通过按Enter键或单击“发送”按钮将输入的信息发送到服务器,并清空输入框

类似的客户端也记得,数据流关闭过程与上面的服务端基本相同,但还有一个接收窗口关闭的事件并在关闭时关闭IO流的过程

:这一定不是最好的方法,但应该是适合新人的方法

一般的电脑不能直接连接IP端口。 因为局域网需要端口映射技术才能连接到广域网

阅读或发送发送过来的消息后,不要关闭流,保持打开就可以了。 否则,整个连接将关闭.

我第一次写了回答。 语言表达能力有限的文字有很多东西不清楚。 很模糊。 如果有不明白的人的话请问我哦

如果想实现提问中的注册登录,只需保存简单的订单和数据即可进行密码。 如果不直接返回密码错误的信息,也可以关闭连接

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。