freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于java的局域網(wǎng)聊天系統(tǒng)(已修改)

2025-07-05 07:08 本頁面
 

【正文】 目錄1 引言 3 3 開發(fā)目標 72系統(tǒng)總體設計(針對一個完整的題目) 7 用例圖及用例描述 7 103. 系統(tǒng)詳細設計與實現(xiàn) 11 …………………………………………………………………………..11 …………………………………………………………….12 …………………………………………………………………….13 …………………………………………………………………..24 總結 37 運行結果…………………………………………………………………..37 測試與分析………………………………………………………………465任務分配表 47參考文獻 48 1 引言(1) 課題要求軟件名:網(wǎng)上聊天系統(tǒng)(分服務器端和客戶端兩部分)功能: 使用Winsock實現(xiàn)網(wǎng)上聊天功能(實現(xiàn)時可在一臺機器上調試運行)。用戶可以通過客戶端連接到服務器端并進行網(wǎng)上聊天。當然,聊天時可以啟動多個客戶端。編程語言:java 硬件平臺CPU:Pentium4以上內存:128M以上軟件平臺操作系統(tǒng):windows系列,mac系列,linux等 開發(fā)工具:Eclipse,JDK6描述: (1)實現(xiàn)群聊和私聊; (2)實現(xiàn)文件的發(fā)送與接收; (3)實現(xiàn)截圖功能; (4)實現(xiàn)用戶列表的維護。 (5)實現(xiàn)字體的改變(2) 開發(fā)技術Socket 的編程模型如圖1所示。圖1 Socket 的編程模型字節(jié)流套接字(Stream Socket) 是最常用的套接字類型,TCP/IP協(xié)議族中的 TCP 協(xié)議使用此類接口。字節(jié)流套接口提供面向連接的、無差錯的、發(fā)送先后順序一致的、無記錄邊界和非重復的網(wǎng)絡信息包傳輸。其模型如圖2所示。數(shù)據(jù)報套接字 (Datagram Socket) TCP/IP協(xié)議族中的UDP協(xié)議使用此類接口,它是無連接的服務,它以獨立的信息包進行網(wǎng)絡傳輸,信息包最大長度為32KB,傳輸不保證順序性、可靠性和無重復性,它通常用于單個報文傳輸或可靠性不重要的場合。數(shù)據(jù)報套接口的一個重要特點是它保留了記錄邊界。其模型如圖3所示。原始數(shù)據(jù)報套接字(Raw Socket) 提供對網(wǎng)絡下層通訊協(xié)議(如IP協(xié)議)的直接訪問,它一般不是提供給普通用戶的,主要用于開發(fā)新的協(xié)議或用于提取協(xié)議較隱蔽的功能。圖2 面向連接的SOCKET編程模型圖3 面向非連接的SOCKET編程模型 Windows Sockets規(guī)范中定義了一個新的數(shù)據(jù)類型 SOCKET,這一類型的定義對于將來Windows Sockets規(guī)范的升級是必要的。這一類型的定義保證了應用程序向Win32 環(huán)境的可移植性。因為這一類型會自動地從16位升級到32位。(3) 程序開發(fā)環(huán)境和開發(fā)語言創(chuàng)建套接字──socket() 應用程序在使用套接字前,首先必須擁有一個套接字,系統(tǒng)調用socket()向應用程序提供創(chuàng)建套接字的手段,其調用格式如下:SOCKET socket(int af, int type, int protocol)。 該調用要接收三個參數(shù):af、type、protocol。參數(shù)af指定通信發(fā)生的區(qū)域,UNIX系統(tǒng)支持的地址族有:AF_UNIX、AF_INET、AF_NS等,而DOS、WINDOWS中僅支持AF_INET,它是網(wǎng)際網(wǎng)區(qū)域。因此,地址族與協(xié)議族相同。參數(shù)type 描述要建立的套接字的類型。若取 SOCK_STREAM表示要創(chuàng)建的套接字是流套接字,取SOCK_DGRAM創(chuàng)建的是數(shù)據(jù)報套接字,取SOCK_RAW表示創(chuàng)建原始套接字。參數(shù)protocol說明該套接字使用的特定協(xié)議,如果調用者不希望特別指定使用的協(xié)議,則置為0,使用默認的連接模式。若套接字創(chuàng)建成功則該函數(shù)返回所創(chuàng)建的套接字句柄SOCKET,否則產(chǎn)生INVALID_SOCKET錯誤。指定本地地址──bind() 當一個套接字用socket()創(chuàng)建后,存在一個名字空間(地址族),但它沒有被命名。bind()將套接字地址(包括本地主機地址和本地端口地址)與所創(chuàng)建的套接字號聯(lián)系起來,即將名字賦予套接字,以指定本地半相關。其調用格式如下:int bind(SOCKET s, const struct sockaddr* name, int namelen)。參數(shù)s是由socket()調用返回的并且未作連接的套接字描述符(套接字號)。參數(shù)name 是賦給套接字s的本地地址,它由struct sockaddr結構表示,namelen表明了name的長度。 如果沒有錯誤發(fā)生,bind()返回0。否則返回值SOCKET_ERROR。 sockaddr結構隨選擇的協(xié)議不同而變化,因此一般情況下另一個與該地址結構大小相同的sockaddr_in結構更常用,sockaddr_in結構用來標識TCP/IP協(xié)議下的地址,并可以方便地通過強制類型轉換將其轉換為sockaddr結構,sockaddr_in的格式如下:struct sockaddr_in { short sin_family。 /*AF_INET*/ u_short sin_port。 /*16位端口號*/ struct in_addr sin_addr。 /*32位IP地址*/ char sin_zero[8]。 /*保留*/}監(jiān)聽連接──listen() 此調用用于面向連接服務器,表明它愿意接收連接。listen()需在accept()之前調用,其調用格式如下:int listen(SOCKET s, int backlog)。 參數(shù)s標識一個本地已建立、尚未連接的套接字號,服務器愿意從它上面接收請求。backlog表示請求連接隊列的最大長度,用于限制排隊請求的個數(shù),目前允許的最大值為5。如果沒有錯誤發(fā)生,listen()返回0。否則它返回SOCKET_ERROR。 listen()在執(zhí)行調用過程中可為沒有調用過bind()的套接字s完成所必須的連接,并建立長度為backlog的請求連接隊列。 調用listen()是服務器接收一個連接請求的四個步驟中的第三步。它在調用socket()分配一個流套接字,且調用bind()給s賦于一個名字之后調用,而且一定要在accept()之前調用。建立套接字連接──connect()與accept() 這兩個系統(tǒng)調用用于完成一個完整相關的建立,其中connect()用于建立連接。無連接的套接字進程也可以調用connect(),但這時在進程之間沒有實際的報文交換,調用將從本地操作系統(tǒng)直接返回。這樣做的優(yōu)點是程序員不必為每一數(shù)據(jù)指定目的地址,而且如果收到的一個數(shù)據(jù)報,其目的端口未與任何套接字建立“連接”,便能判斷該端口不可操作。而accept()用于使服務器等待來自某客戶進程的實際連接。 connect()的調用格式如下:int connect(SOCKET s, const struct sockaddr * name, int namelen)。參數(shù)s是欲建立連接的本地套接字描述符。參數(shù)name指出說明對方套接字地址結構的指針。對方套接字地址長度由namelen說明。如果沒有錯誤發(fā)生,connect()返回0。否則返回值SOCKET_ERROR。在面向連接的協(xié)議中,該調用導致本地系統(tǒng)和外部系統(tǒng)之間連接實際建立。由于地址族總被包含在套接字地址結構的前兩個字節(jié)中,并通過socket()調用與某個協(xié)議族相關。因此bind()和connect()無須協(xié)議作為參數(shù)。 accept()的調用格式如下:SOCKET accept(SOCKET s, struct sockaddr * addr, int FAR* addrlen)。 參數(shù)s為本地套接字描述符,在用做accept()調用的參數(shù)前應該先調用過listen()。addr 指向客戶方套接字地址結構的指針,用來接收連接實體的地址。addr的確切格式由套接字創(chuàng)建時建立的地址族決定。addrlen 為客戶方套接字地址的長度(字節(jié)數(shù))。如果沒有錯誤發(fā)生,accept()返回一個SOCKET類型的值,表示接收到的套接字的描述符。否則返回值INVALID_SOCKET。accept()用于面向連接服務器。參數(shù)addr和addrlen存放客戶方的地址信息。調用前,參數(shù)addr 指向一個初始值為空的地址結構,而addrlen 的初始值為0;調用accept()后,服務器等待從編號為s的套接字上接受客戶連接請求,而連接請求是由客戶方的connect()調用發(fā)出的。當有連接請求到達時,accept()調用將請求連接隊列上的第一個客戶方套接字地址及長度放入addr 和addrlen,并創(chuàng)建一個與s有相同特性的新套接字號。新的套接字可用于處理服務器并發(fā)請求。四個套接字系統(tǒng)調用,socket()、bind()、connect()、accept(),可以完成一個完全五元相關的建立。socket()指定五元組中的協(xié)議元,它的用法與是否為客戶或服務器、是否面向連接無關。bind()指定五元組中的本地二元,即本地主機地址和端口號,其用法與是否面向連接有關:在服務器方,無論是否面向連接,均要調用bind();在客戶方,若采用面向連接,則可以不調用bind(),而通過connect()自動完成。若采用無連接,客戶方必須使用bind()以獲得一個唯一的地址。以上討論僅對客戶/服務器模式而言,實際上套接字的使用是非常靈活的,唯一需遵循的原則是進程通信之前,必須建立完整的相關。數(shù)據(jù)傳輸──send()與recv() 當一個連接建立以后,就可以傳輸數(shù)據(jù)了。常用的系統(tǒng)調用有send()和recv()。 send()調用用于在參數(shù)s指定的已連接的數(shù)據(jù)報或流套接字上發(fā)送輸出數(shù)據(jù),格式如下:int send(SOCKET s, const char *buf, int len, int flags)。 參數(shù)s為已連接的本地套接字描述符。buf 指向存有發(fā)送數(shù)據(jù)的緩沖區(qū)的指針,其長度由len 指定。flags 指定傳輸控制方式,如是否發(fā)送帶外數(shù)據(jù)等。如果沒有錯誤發(fā)生,send()返回總共發(fā)送的字節(jié)數(shù)。否則它返回SOCKET_ERROR。 recv()調用用于在參數(shù)s指定的已連接的數(shù)據(jù)報或流套接字上接收輸入數(shù)據(jù),格式如下:int recv(SOCKET s, char *buf, int len, int flags)。 參數(shù)s 為已連接的套接字描述符。buf指向接收輸入數(shù)據(jù)緩沖區(qū)的指針,其長度由len 指定。flags 指定傳輸控制方式,如是否接收帶外數(shù)據(jù)等。如果沒有錯誤發(fā)生,recv()返回總共接收的字節(jié)數(shù)。如果連接被關閉,返回0。否則它返回SOCKET_ERROR。關閉套接字──closesocket() closesocket()關閉套接字s,并釋放分配給該套接字的資源;如果s涉及一個打開的TCP連接,則該連接被釋放。closesocket()的調用格式如下:BOOL closesocket(SOCKET s)。 參數(shù)s待關閉的套接字描述符。如果沒有錯誤發(fā)生,closesocket()返回0。否則返回值SOCKET_ERROR。(4) 每個人自行完成上述任務。 開發(fā)目標本課程設計目標是實現(xiàn)方便快捷的局域網(wǎng)多人在線聊天系統(tǒng),人性化的界面,主要功能如下:(1)實現(xiàn)群聊和私聊;(2)實現(xiàn)文件的發(fā)送與接收; (3)實現(xiàn)截圖功能; (4)實現(xiàn)用戶列表的維護。 (5)實現(xiàn)字體的改變2系統(tǒng)總體設計(針對一個完整的題目) 用例圖及用例描述客戶端服務器端主要用例描述:用例名:客戶端登錄主要參與者:用戶概述:用戶通過此用例連接服務器交互過程:,端口,性別,觸發(fā)用例用例名:群聊,私聊主要參與者:用戶概述:用戶通過此用例與其他用戶聊天交互過程:用例名:文件傳送與接收主要參與者:用戶概述:用戶通過此用例完成文件傳送與接收交互過程:1. 選擇接受者2. 用戶點擊發(fā)送文件按鈕3. 選擇文件,并發(fā)送4..用戶接收文件用例名:截圖主要參與者:用戶概述:通過此用例用戶可以完成截圖并保存交互過程:1. 用戶點擊截圖按鈕2. 確定截圖范圍3. 保存用例名:保存聊天記錄主要參與者:用戶概述:通過此用例用戶可以保存并查看聊天記錄交互過程:1. 用戶點擊聊天記錄2. 保存用例名:保存日志主要參與者:管理員概述:通過此用例管理員可以完成保存系統(tǒng)日志交互過程:1. 用戶點擊保存日志2. 保存用例名:維護用戶列表主要參與者:管理員概述:通過此用例管理員可以完成維護
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1