局域网文件文本在线传输助手

局域网文件文本在线传输助手
具体实现代码链接
下面我将详细记录,我在完成该项目涉及的具体问题的具体分析实现。

要进行局域网通信首先要做的就是客户端和局域网建立链接。
链接过程
服务器端是无法知道都有哪些客户端要和其建立连接的。所以必须客户端首先拿到服务器的ip和端口号发起建立请求。但是,这也有个要求,就是服务器这个时候已经启动等待客户端发来请求。所以我们在最终启动的时候,应先启动服务器。
客户端:client 为想要连接的客户端的socket。

client = new Socket("127.0.0.1", 6666);

服务器端:
由于服务器的一对多,我们必然面对的就是服务器不能过载。而且,我们的服务器肯定不能同步的进行线性的一个个和客户端完成交流,肯定是一个客户端对应一个线程我在设计的时候采用了固定大小线程池来控制连接的客户端数量。client为连接来的客户端的socket。

serverSocket = new ServerSocket(6666);
Socket client = null;
executorService = Executors.newFixedThreadPool(5);
while(true){
    System.out.println("等待客户端连接...");
    client = serverSocket.accept();
    System.out.println("有新的客户端连接,端口号为:"+client.getPort());
    executorService.submit(new ExecuteClient(client));
}

客户端的读写分离
首先我们不能够说等待你发数据的时候,你不能够接收数据。这样明显效率不高。我们常用的这些资源传输工具明显不是这样用的。所以多线程不只是应用在客户端和服务器的链接上,也在客户端自身的读操作和写操作上。

readFromServer.start();
sendToServer.start();

用户的登录注册
在用户和客户端建立好连接后,首先客户端要求用户先完成登录注册操作。
典型异常操作:
1.如若用户在未完成登录注册前提下发送数据,服务器不予以响应并客户端返回提示信息,提示用户先完成登录注册
2.如果用户重复使用同一用户名在不同端口登录,则不予以登录注册许可,并返回提示信息,异地重复登录
3.如果用户在不同时间换端口登录,则修改服务器端存储信息,予以登录许可,提示登录成功。
4.如果用户在同一端口重复登录注册&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值