寫在前面:
可能是臨近期末了,各種課程設(shè)計(jì)接踵而來(lái),最近在csdn上看到2個(gè)一樣問(wèn)答(問(wèn)題A,問(wèn)題B),那就是編寫一個(gè)基于socket的聊天程序,正好最近剛用socket做了一些事,出于興趣,自己抽了幾個(gè)晚上的空閑時(shí)間敲了一個(gè),目前僅支持單聊,群聊,文件傳送這些功能。首先,貼出一個(gè)丑丑的程序圖(UI是用java swing寫的,這個(gè)早就忘光了,無(wú)奈看著JDK的API寫了一個(gè)),如下圖:
服務(wù)端設(shè)計(jì):
服務(wù)端主要有兩個(gè)操作,一是阻塞接收客戶端的socket并做響應(yīng)處理,二是檢測(cè)客戶端的心跳,如果客戶端一段時(shí)間內(nèi)沒(méi)有發(fā)送心跳則移除該客戶端,由Server創(chuàng)建ServerSocket,然后啟動(dòng)兩個(gè)線程池去處理這兩件事(newFixedThreadPool,newSch