网络编程+聊天室项目

关于Socket

几个方法 的 流程

韩顺平

Socket类和accept

  1. 服务器端先定下来,哪个端口通讯(如9999)
  2. accpet()就是在等待连接
  3. 客户端那边确认要连9999

accept();
一个accept 就可以产生一个专门负责一个客户端的Socket
ServerSocket 就可以产生多个accpet
Soceket作为客户端,就产生一个socket

IO流 和 结束标记

OutputStream os= new OutputStream(); 
os.write("内容".getBytes());

就是创造个空水桶,等着装内容。

InputStream一样的


发送的每一条消息,
要在消息前后加上个前后缀,程序才能知道是否说完内容
socket.shutdownOutput()----这个是字节流
writer.newLine(); 这个必须要用readLine() 才认识;

字节/字符 流

带Reader/Writer 的 字符流,尽量文本文件
Buffered就是包装处理的作用
抽象基类:需要前缀来标定

疯狂java
例如:ObjectWrite就是图省事,干脆直接把整个对象都发出去
当然,前提是需要用writeObject所写入的类必须要实现serilizebal接口

传文件

在这里插入图片描述

关于服务器和客户端线程的模型

在这里插入图片描述由图可以了解到,几个进程、线程的关系是
客户端:
进程产生main进程
—>main进程内部产生和服务器通讯的线程。
但是,main消失,不代表通信线程不消失。

所以,正常退出的方法如图:
从main弄一个message对象给服务器过去
—>服务器那边拿到信息,根据信息,把对应Socket移出去
—>socket以及对应的线程消失、停止

私聊思路+模型

首先明确一个概念
每一个客户端,都是一个线程。
都是批量生产制造的。
在聊天的时候,A发消息,B收消息;下一次则是B发消息、A收消息。
不要把客户端分开看,其实都要准备一个专门负责发的socket,还也要准备一个收的socket。

私聊、群聊概念模型

在这里插入图片描述

群聊在这里插入图片描述

私聊模型

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值