基于socket通讯的网络聊天室(中)

基于socket通讯的网络聊天室(上)

项目总结:

      经过三四天的时间,项目终于搞完了,基本实现了私聊,群聊,在线查看聊天记录,下载聊天记录等功能,但是界面做的不是很好,想着用QT做的时候,再把界面完善一下。做完与别人交流的时候,发现自己和别人有好几处不一样,我在socket传输文件时,传的是字符串,有的人传的是结构体。有人觉得账户和密码要组包发送,不然要是用户发了账户,然后人走开了,服务器一直阻塞在这,下一个客户端无法登录。又想了一下自己的程序,我用的多线程,每登录一个客户端就为它开一个线程,不影响其他客户端。

       私聊那有个bug,A和B聊天期间,C要跟A或B聊天时,我采取的是如果C介入,我会告诉他,对方正在聊天,然后会退回到主界面。但是这样不好,我应该把他发的信息保存下来。还有个问题,因为我采用的是TCP,它是字节流,在黑窗口显示不出来,但是如果你用QT做,肯定会有按钮,但是如果你一不小心点了两次,数据会以极快的速度发过去,所以发送数据,协议不能太简单,一般应该有头有尾。     

第二种方式:

          我之前采用的是多线程+传输的是字符串,还有种方式是采用select+传输的是结构体。

          未完待续。。。

 

Socket技术是指在网络传输,用于描述网络传输过程的两个端点之间的通信节点。网络聊天室是基于Socket技术开发的一种应用,主要是通过网络连接来实现多人在线聊天的功能。 在实现基于Socket网络聊天室时,需要用到服务器和客户端两个程序,其服务器程序用于接收客户端的数据,并将数据广播给其他客户端,客户端程序用于连接到服务器,发送和接收聊天信息。 下面是一个简单的基于Socket网络聊天室的实现步骤: 1. 编写服务器程序 在服务器端,需要监听指定的端口,等待客户端的连接,并在客户端连接到服务器后,创建一个新的线程来处理该客户端的聊天消息。 2. 编写客户端程序 在客户端,需要连接到服务器指定的IP地址和端口,然后发送或接收聊天消息。 3. 实现聊天功能 服务器和客户端之间可以通过流来传输聊天消息,可以使用Java Socket库的InputStream和OutputStream类来实现。 在服务器端,需要接收客户端发送的数据,并将数据广播给其他客户端。可以使用一个List集合来存储连接到服务器的客户端Socket对象,然后遍历该集合,向每个客户端Socket对象的OutputStream写入聊天消息。 在客户端,需要从服务器读取聊天信息,并将其显示在用户界面上。可以使用一个新线程来循环读取服务器发送的数据,然后将数据显示在用户界面。 4. 处理异常情况 在Socket编程,需要处理各种异常情况,比如网络连接断开、超时等。可以使用try-catch语句来处理异常,并在出现异常时关闭连接和资源。 基于Socket网络聊天室可以实现多人在线聊天的功能,可以让用户在不同地点的计算机上进行即时通讯和交流,具有很高的实用价值和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值