【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )
生活随笔
收集整理的這篇文章主要介紹了
【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、服務(wù)器端完整代碼 Server.groovy
- 二、客戶端完整代碼 Client.groovy
- 三、運行服務(wù)器端與客戶端效果及過程分析
一、服務(wù)器端完整代碼 Server.groovy
參考 【Groovy】使用 Groovy 語言開發(fā)服務(wù)器 Server 和客戶端 Client 套接字程序 ( 服務(wù)器端開發(fā) ) 博客 ;
// 服務(wù)器端 def serverSocket = new ServerSocket(8088)// 存放客戶端連接的集合 def sockets = []// 服務(wù)器端是否關(guān)閉 def isQuit = false;// 接收線程 , 接收客戶端傳遞的數(shù)據(jù) Thread.start {while (!isQuit) {// 等待接收客戶端請求def socket = serverSocket.accept()/*上述 accept 操作還會拋出異常public Socket accept() throws IOException在 Java 中必須捕獲處理該異常在 Groovy 中不強制要求處理異常*/// 將客戶端連接存儲到 客戶端連接的集合 sockets 集合中sockets << socket// 再次開啟一個線程 , 讀取客戶端傳輸?shù)膬?nèi)容Thread.start {// 讀取數(shù)據(jù)的緩沖區(qū)def bytes = new byte[1024]// 沒有關(guān)閉的情況下才開始讀取while (!socket.isClosed()) {def len = socket.inputStream.read(bytes)if (len > 0) {println "${socket.remoteSocketAddress} : ${new String(bytes, 0, len)}"}socket.outputStream.write("Hello Client, this is Server !".getBytes())}}}// 關(guān)閉服務(wù)器if (!serverSocket.isClosed()) {serverSocket.close();}sockets.each {it.close()} }// 讀取命令行數(shù)據(jù) def scanner = new Scanner(System.in)// 發(fā)送線程 , 向客戶端發(fā)送數(shù)據(jù) Thread.start {while (!isQuit) {def inputString = scanner.nextLine()if (inputString == "quit") {isQuit = true// 關(guān)閉服務(wù)器if (!serverSocket.isClosed()) {serverSocket.close();}sockets.each {it.close()}}sockets*.outputStream*.write(inputString.getBytes())} }二、客戶端完整代碼 Client.groovy
參考 【Groovy】使用 Groovy 語言開發(fā)服務(wù)器 Server 和客戶端 Client 套接字程序 ( 客戶端開發(fā) ) 博客 ;
// 客戶端套接字 def client = new Socket("127.0.0.1", 8088)// 接收線程 , 讀取服務(wù)器端傳輸?shù)膬?nèi)容 Thread.start {// 讀取數(shù)據(jù)的緩沖區(qū)def bytes = new byte[1024]// 沒有關(guān)閉的情況下才開始讀取while (!client.isClosed()) {def len = client.inputStream.read(bytes)if (len > 0) {println "${client.remoteSocketAddress} : ${new String(bytes, 0, len)}"}} }// 發(fā)送線程 , 向服務(wù)器端發(fā)送數(shù)據(jù) Thread.start {client.outputStream.write("Hello Server , This is Client !".getBytes()) }三、運行服務(wù)器端與客戶端效果及過程分析
先運行服務(wù)器端 , 服務(wù)器端 ServerSocket 創(chuàng)建 , 并開始監(jiān)聽 8088 端口 ;
然后運行客戶端 , 客戶端會自動向服務(wù)器端發(fā)送
"Hello Server , This is Client !"字符串?dāng)?shù)據(jù) , 服務(wù)器端接收到數(shù)據(jù)后 , 在服務(wù)器端命令行打印該數(shù)據(jù) , 并向客戶端發(fā)送
"Hello Client, this is Server !"字符串換數(shù)據(jù) , 客戶端接收到該數(shù)據(jù)后 , 在命令行中打印該字符串 ;
服務(wù)器端打印的內(nèi)容 :
客戶端打印的內(nèi)容 :
服務(wù)器端輸入 123 字符串 ,
客戶端會打印出該數(shù)據(jù) :
總結(jié)
以上是生活随笔為你收集整理的【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Groovy】使用 Groovy 语言
- 下一篇: 【错误记录】Groovy 工程编译报错