【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )
文章目录
- 一、服务器端完整代码 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 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )相关推荐
- 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器端开发 )
文章目录 一.服务器端 ServerSocket 开发 1.创建服务器端套接字 ServerSocket 2.等待客户端请求 3.管理客户端连接 4.接收客户端数据线程 5.向客户端发送数据线程 二. ...
- 服务器复制性能下降,使用套接字 API 程序将数据复制到 TCP 服务器时Windows性能...
使用套接字 API 程序将数据复制到 TCP 服务器时Windows性能 12/04/2020 本文内容 本文提供了使用套接字 API 程序将数据复制到 TCP 服务器时出现性能缓慢Windows解决 ...
- java贪吃蛇客户端服务器_java Socket套接字TCP编程开发服务端和客户端之间的通信 - 贪吃蛇学院-专业IT技术平台...
超级简单,没有太多实质内容的Socket服务端,客户端小程序 先运行server 再运行client OK 服务端代码如下: public class Server { public static v ...
- C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)
#include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...
- c 服务器和android客户端,通过TCP与c + +(套接字服务器)conect android(套接字客户端)...
我有一个实现在大学项目中做,我不知道如何avchive它!我的问题就像标题所说的那样,通过套接字将C++与android连接起来.通过TCP与c + +(套接字服务器)conect android(套 ...
- 快速开发后台不用太多代码的 tp5_小程序·云开发优劣简述
最近一直在进行书籍<微信小程序开发入门与实践>的第二版的编辑工作.工作量还是挺大的,整个书籍更新量超过了70%.除了替换一些旧有的接口,第二版还增加了以下内容: 1. 自定义组件.电影部分 ...
- 获取服务器时间的软件如何修改时间,小程序云开发获取服务器时间
在实际开发过中,我们需要获取服务器时间,来保证时间的准确性,这里主要介绍使用 使用云函数来获取服务器时间 // 云函数入口文件 const cloud = require('wx-server-sdk ...
- python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)
本文承接上篇文章的客户端-服务器聊天对话程序,进一步设计开发了微信群聊的python模拟程序,涉及的python知识点为:Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)和 ...
- java套接字数据对不上,服务器不从多个客户端(Java套接字)接收数据
我写了一个简单的程序,服务器应该打印多个客户端发送的数据.但服务器只接收部分数据.以下是代码的相关部分. 服务器: try { serverSocket = new ServerSocket(8888 ...
最新文章
- html转义符 xsl转义符
- 比特币黄金BTG遭遇51%算力攻击,即将归零?
- 如何在Eclipse中自动删除尾随空格?
- Spring Boot 2 + Redis 对象缓存
- XCTF WEB simple_php
- Mysql报错时区错误invalid timezone
- C语言试题三十六之将s所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
- 漫画:什么是字符集和编码?ASCII、UTF-8、UTF-16、UTF-32 又是什么?
- Git 存在多个漏洞,开发人员应及时更新
- Android4.4深入浅出之SurfaceFlinger总体结构
- 用友U815.0UFO报表知识点分享
- 京东T9架构师手把手教你怎么写年薪50万的java简历
- 嵌入式课程 之 超声波传感器实验
- 大学网课查题接口平台
- jQueryEasyU校验邮箱、手机号等
- Flask模板中可以直接访问的特殊变量和方法
- Android自动化测试之MonkeyRunner MonkeyDevice MonkeyImage API使用详解 脚本编写 脚本录制回放
- 捷通华声联合清华海峡研究院 打造中国顶尖人工智能研究中心
- Yarn主导资源公平性调度算法
- SRRC认证是什么——无线电发射设备型号核准证