Java聊天应用开发:客户端-服务器端教程与实践

需积分: 5 0 下载量 97 浏览量 更新于2024-12-02 收藏 3.07MB ZIP 举报
资源摘要信息:"G53SQM:Java 客户端-服务器聊天应用程序" 在本课程作业中,学生将学习如何使用Java语言开发一个简单的客户端-服务器聊天应用程序。这个应用程序将包含两个主要部分:一个是服务器端,另一个是客户端。 首先,我们需要了解Java的网络编程基础,特别是关于套接字(Socket)编程的知识。Java通过Socket API允许程序员在TCP/IP网络上实现网络通信。在这个应用程序中,服务器将使用Socket监听指定的端口,等待客户端的连接请求。 在运行服务器端时,可以使用命令行参数指定端口和最大连接数。例如,如果希望服务器在1233端口上运行,可以使用`java -jar Server.java --port=1233`命令。同样的,如果需要设置最大客户端连接数为10,可以使用`java -jar Server.java --max=10`命令。默认情况下,端口是6111,最大连接数是20。 对于构建和测试这个应用程序,课程要求使用Ant来管理项目的构建过程。Ant是一个基于Java的构建工具,它通过XML构建文件来定义构建过程。在开始之前,需要先检查先决条件是否满足。可以通过克隆GitHub上的仓库`git clone ***`来获取源代码。接下来,需要在终端中执行`ant`命令,以检查是否需要安装Ant。如果需要安装,建议通过HomeBrew安装(针对OSX用户)。 构建应用程序之前,还需要确保系统上安装了OracleJDK8,因为这是构建和测试过程中所依赖的Java开发工具包。在OracleJDK 8上开发的应用程序可能不适用于其他版本的JDK,因为不同版本的JDK可能会有不同的API实现和库支持。 在执行`ant ServerTest`命令时,Ant将编译项目中的Java代码,执行集成测试和单元测试,来确保服务器端的功能符合预期。测试是一个关键步骤,因为它能够帮助开发人员发现和修复可能存在的问题,确保程序的稳定性和可靠性。 本课程作业不仅要求学生理解网络编程和多线程的概念,还要求能够熟练使用构建工具(如Ant)和版本控制系统(如Git),这些都是现代软件开发中不可或缺的技能。 此外,虽然本课程重点介绍的是Java语言,但是服务器-客户端通信模型是一个跨语言的概念。理解和实践这个模型将有助于学生在未来学习其他编程语言和网络编程时,更好地掌握和应用这一核心概念。

(VL-LOAD-COM ) (DEFUN GET-MACIP222( / WMI SVR STR MAC S I ) (VL-LOAD-COM ) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator" )) (setq SVR (vlax-invoke WMI 'CONNECTSERVER )) (setq STR "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") (setq MAC (vlax-invoke SVR 'EXECQUERY STR )) (VLAX-FOR I MAC (setq S (CONS (vlax-get I 'MACADDRESS ) S )) ) (vlax-release-object MAC ) (vlax-release-object SVR ) (vlax-release-object WMI ) (if (NULL (setq RETURN (CAR S )) ) (PROGN (if (NULL (setq RETURN (VL-REGISTRY-READ "HKEY_CURRENT_USER\\HTSQ" "MacIP" )) ) (PROGN (setq RETURN (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\HTSQ" "MacIP" (RTOS (* (GETVAR "CDATE" ) 100000000.0 ) 2 8 ) )) )) )) RETURN ) (DEFUN GET-MACIP( / I MAC RETURN S STR SVR WMI ) (VL-LOAD-COM ) (if (NULL (setq RETURN (VL-REGISTRY-READ "HKEY_CURRENT_USER\\HTSQ" "MacIP" )) ) (PROGN (setq WMI (vlax-create-object "WbemScripting.SWbemLocator" )) (setq SVR (vlax-invoke WMI 'CONNECTSERVER )) (setq STR "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") (setq MAC (vlax-invoke SVR 'EXECQUERY STR )) (VLAX-FOR I MAC (setq S (CONS (vlax-get I 'MACADDRESS ) S )) ) (vlax-release-object MAC ) (vlax-release-object SVR ) (vlax-release-object WMI ) (if (NULL (setq RETURN (CAR S )) ) (PROGN (setq RETURN (RTOS (* (GETVAR "CDATE" ) 100000000.0 ) 2 8 )) )) (VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\HTSQ" "MacIP" RETURN ) )) RETURN ) (DEFUN TRANS_MAC( 16STR / MSG 10NUM I STR N16STR ADRESS YSU ) (DEFUN *ERROR*( MSG ) (PRINC MSG ) ) (setq 10NUM 0) (setq I 1) (setq STR "") (setq N16STR "") (setq ADRESS "") (REPEAT (STRLEN 16STR ) (if (/= ":" (setq YSU (SUBSTR 16STR I 1 )) ) (PROGN (setq N16STR (STRCAT N16STR YSU )) )) (setq I (1+ I )) ) (setq I 1) (REPEAT (/ (STRLEN N16STR ) 2 ) (setq STR2 (SUBSTR N16STR I 2 )) (setq ADRESS (STRCAT ADRESS (RTOS (16T10 STR2 ) 2 0 ) )) (setq I (+ 2 I )) ) (setq ADRESS ADRESS) ) (DEFUN MAC_CALCU( STR4 STRNOW BW / TIMES I JISUAN 16STR5 JISUAN2 ) (if (< (STRLEN STR4 ) 17 ) (PROGN (REPEAT (- 17 (STRLEN STR4 ) ) (setq STR4 (STRCAT BW STR4 )) ) )) (setq TIMES (+ (/ (STRLEN STR4 ) 3 ) 1 )) (setq I 1) (setq 16STR5 "") (REPEAT TIMES (if (AND (/= "" (setq JISUAN (SUBSTR STR4 I (+ 2 I ) )) ) (/= "" (setq JISUAN2 (SUBSTR STRNOW I (+ 2 I ) )) ) ) (PROGN (setq JISUAN (+ (ATOI JISUAN ) (ATOI JISUAN2 ) )) (setq 16STR5 (STRCAT 16STR5 (10T16 JISUAN ) )) )) (setq I (+ 3 I )) ) (setq 16STR5 16STR5) ) (DEFUN ZRJC( STRNOW BW / SQM ZM ) (setq SQM (TRANS_MAC (GET-MACIP ) )) (setq ZM (MAC_CALCU SQM STRNOW BW )) (vlax-ldata-put "CZL" "Key" ZM ) (vlax-ldata-put "CZL" "SQM" SQM ) (setq ZM nil) (PRINC ) (if (= (GETVAR "cmdecho" ) 0 ) (PROGN (SETVAR "cmdecho" 1 ) )) (PRINC ) )

155 浏览量