【无标题】

java 菜鸟入门Socket编程经验总结

一、Client-Server通信系统项目

0.0版本主要有以下功能

  1. 用户登录、注册。

  2. 用户私聊消息。

  3. 用户群发消息。

  4. 用户发送文件。

  5. 服务端发送离线消息。

  6. 服务端群发消息。

二、关于这个简单项目的一些思考

(一)、客户端和服务端通信靠Socket完成。

服务端ServerSocket serversocket = new ServerSocekt(9999);监听来自9999端口的请求,有客户端向服务端(假设服务端在221.15.12.156)9999端口请求连接;
Socket socket = new socket(InetAddress.getByName(“221.15.12.156”),9999);
客户端socket(localport不是9999,是系统随机分配65535个通信端口的空闲端口,通信的对端(221.15.12.156:9999)
服务端Socket socket =serversocket.accept();服务端的socket和该客户端建立连接,服务端的socket(localport是9999,通信对端是(客户端IP:客户端localport))和客户端进行通信。

(二 )本项目IO采用的是同步、阻塞IO流(java.lang.io)

该IO流有以下特点;
1.read读取数据时,需要判断什么时候读取结束,如果没有结束标志,会一直read,造成程序堵塞;
若想客户端与服务端保持长通信(客户端登陆后,每次发送消息,不用重新创建socket,一个socket贯穿客户端的生命周期),客户端与服务端连接时,客户端创建一个线程去读取服务端发送的数据(该线程用来和服务端保持长通信),客户端没有发送结束标志,通信线程堵塞,而程序进程不会堵塞。
2.客户端和服务端的通信数据采用面向对象的思想,即IO流采用ObjectInputStream和ObjectOutputStream。

项目gitee地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值