文章目录

  • 一、服务器端完整代码 Server.groovy
  • 二、客户端完整代码 Client.groovy
  • 三、运行服务器端与客户端效果及过程分析

一、服务器端完整代码 Server.groovy


参考 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器端开发 ) 博客 ;

// 服务器端
def serverSocket = new ServerSocket(8088)// 存放客户端连接的集合
def sockets = []// 服务器端是否关闭
def isQuit = false;// 接收线程 , 接收客户端传递的数据
Thread.start {while (!isQuit) {// 等待接收客户端请求def socket = serverSocket.accept()/*上述 accept 操作还会抛出异常public Socket accept() throws IOException在 Java 中必须捕获处理该异常在 Groovy 中不强制要求处理异常*/// 将客户端连接存储到 客户端连接的集合 sockets 集合中sockets << socket// 再次开启一个线程 , 读取客户端传输的内容Thread.start {// 读取数据的缓冲区def bytes = new byte[1024]// 没有关闭的情况下才开始读取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())}}}// 关闭服务器if (!serverSocket.isClosed()) {serverSocket.close();}sockets.each {it.close()}
}// 读取命令行数据
def scanner = new Scanner(System.in)// 发送线程 , 向客户端发送数据
Thread.start {while (!isQuit) {def inputString = scanner.nextLine()if (inputString == "quit") {isQuit = true// 关闭服务器if (!serverSocket.isClosed()) {serverSocket.close();}sockets.each {it.close()}}sockets*.outputStream*.write(inputString.getBytes())}
}

二、客户端完整代码 Client.groovy


参考 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 客户端开发 ) 博客 ;

// 客户端套接字
def client = new Socket("127.0.0.1", 8088)// 接收线程 , 读取服务器端传输的内容
Thread.start {// 读取数据的缓冲区def bytes = new byte[1024]// 没有关闭的情况下才开始读取while (!client.isClosed()) {def len = client.inputStream.read(bytes)if (len > 0) {println "${client.remoteSocketAddress} : ${new String(bytes, 0, len)}"}}
}// 发送线程 , 向服务器端发送数据
Thread.start {client.outputStream.write("Hello Server , This is Client !".getBytes())
}

三、运行服务器端与客户端效果及过程分析


先运行服务器端 , 服务器端 ServerSocket 创建 , 并开始监听 8088 端口 ;

然后运行客户端 , 客户端会自动向服务器端发送

"Hello Server , This is Client !"

字符串数据 , 服务器端接收到数据后 , 在服务器端命令行打印该数据 , 并向客户端发送

"Hello Client, this is Server !"

字符串换数据 , 客户端接收到该数据后 , 在命令行中打印该字符串 ;

服务器端打印的内容 :

客户端打印的内容 :

服务器端输入 123 字符串 ,

客户端会打印出该数据 :

【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )相关推荐

  1. 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器端开发 )

    文章目录 一.服务器端 ServerSocket 开发 1.创建服务器端套接字 ServerSocket 2.等待客户端请求 3.管理客户端连接 4.接收客户端数据线程 5.向客户端发送数据线程 二. ...

  2. 服务器复制性能下降,使用套接字 API 程序将数据复制到 TCP 服务器时Windows性能...

    使用套接字 API 程序将数据复制到 TCP 服务器时Windows性能 12/04/2020 本文内容 本文提供了使用套接字 API 程序将数据复制到 TCP 服务器时出现性能缓慢Windows解决 ...

  3. java贪吃蛇客户端服务器_java Socket套接字TCP编程开发服务端和客户端之间的通信 - 贪吃蛇学院-专业IT技术平台...

    超级简单,没有太多实质内容的Socket服务端,客户端小程序 先运行server 再运行client OK 服务端代码如下: public class Server { public static v ...

  4. C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)

    #include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...

  5. c 服务器和android客户端,通过TCP与c + +(套接字服务器)conect android(套接字客户端)...

    我有一个实现在大学项目中做,我不知道如何avchive它!我的问题就像标题所说的那样,通过套接字将C++与android连接起来.通过TCP与c + +(套接字服务器)conect android(套 ...

  6. 快速开发后台不用太多代码的 tp5_小程序·云开发优劣简述

    最近一直在进行书籍<微信小程序开发入门与实践>的第二版的编辑工作.工作量还是挺大的,整个书籍更新量超过了70%.除了替换一些旧有的接口,第二版还增加了以下内容: 1. 自定义组件.电影部分 ...

  7. 获取服务器时间的软件如何修改时间,小程序云开发获取服务器时间

    在实际开发过中,我们需要获取服务器时间,来保证时间的准确性,这里主要介绍使用 使用云函数来获取服务器时间 // 云函数入口文件 const cloud = require('wx-server-sdk ...

  8. python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)

    本文承接上篇文章的客户端-服务器聊天对话程序,进一步设计开发了微信群聊的python模拟程序,涉及的python知识点为:Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)和 ...

  9. java套接字数据对不上,服务器不从多个客户端(Java套接字)接收数据

    我写了一个简单的程序,服务器应该打印多个客户端发送的数据.但服务器只接收部分数据.以下是代码的相关部分. 服务器: try { serverSocket = new ServerSocket(8888 ...

最新文章

  1. html转义符 xsl转义符
  2. 比特币黄金BTG遭遇51%算力攻击,即将归零?
  3. 如何在Eclipse中自动删除尾随空格?
  4. Spring Boot 2 + Redis 对象缓存
  5. XCTF WEB simple_php
  6. Mysql报错时区错误invalid timezone
  7. C语言试题三十六之将s所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
  8. 漫画:什么是字符集和编码?ASCII、UTF-8、UTF-16、UTF-32 又是什么?
  9. Git 存在多个漏洞,开发人员应及时更新
  10. Android4.4深入浅出之SurfaceFlinger总体结构
  11. 用友U815.0UFO报表知识点分享
  12. 京东T9架构师手把手教你怎么写年薪50万的java简历
  13. 嵌入式课程 之 超声波传感器实验
  14. 大学网课查题接口平台
  15. jQueryEasyU校验邮箱、手机号等
  16. Flask模板中可以直接访问的特殊变量和方法
  17. Android自动化测试之MonkeyRunner MonkeyDevice MonkeyImage API使用详解 脚本编写 脚本录制回放
  18. 捷通华声联合清华海峡研究院 打造中国顶尖人工智能研究中心
  19. Yarn主导资源公平性调度算法
  20. SRRC认证是什么——无线电发射设备型号核准证

热门文章

  1. **CI两种方式查询所返回的结果数量
  2. Cocos2d-x项目开发时在Eclipse中配置环境编译C++
  3. copy和mutablecpy区别
  4. Andriod绘图的基础知识
  5. Asp.NET 的几个高级技巧
  6. .Net下的HashTable
  7. ubuntu16.04上安装gstreamer
  8. Android studio 使用NDK工具实现JNI编程
  9. Android之布局RelativeLayout
  10. ExtJS4.x动态加载js文件