软件工程 2016.7.5日

软件工程 2016.7.5日


 

  今天我的主要工作是晚场了客户端功能的搭建、连接了客户端UI与客户端Socket部分的功能,为服务端增加了文件锁避免多个线程对同一文件同时操作。

  具体实现的工作有:

  客户端功能搭建:

在客户端完成了通信功能的实现:

  补全了昨天空缺的代码,在收到消息时进行相应的处理:

  其中,ReceiveMsgFromServer(string str);的具体实实现如下:

  客户端UI与客户端Socket的连接

   添加了响应控件的响应,用户点击不同的按钮会调用不同的方法与服务器进行交互。由于代码过于琐碎,在此不做列举。

  

  服务器端修改了部分逻辑,同时对文件增加了读写锁。

   由于原来在服务端对每个用户都新建了一个线程,保证了在接受消息端是同步的。但是却没有保证发送消息、处理文件等的并发性(可以同时操纵多个文件)。所以将相关的方法封装为一个类,对于每一个新链接的用户新建一个该类对象,这样每个用户就可以通过自己保存的类对象进行相关的操作,而互不影响。此部分功能实现代码如下:

   添加从用户ip索引处理对象的字典

   处理对象Handler封装的方法包括

   使用特定ip对应的Handler对象的方法为

   实现上述功能之后,还需要处理文件读写同步的问题,同一文件在同一时间不能被多个线程操作,所以为解决此问题需要为每个文件添加一个读写锁,来控制文件读写同步的问题。

   在程序中创建由文件名索引到读写锁的字典

   在每次操作文件时都需要进行并发控制,检测相应读写锁的使用情况,使用例子如下:

  通过上述方式,实现了文件的读写控制。

相关资源:积分管理系统java源码-resume:我的简历_java管理系统-其它…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年6月3日
下一篇 2016年6月4日

相关推荐