`
leon1509
  • 浏览: 533205 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Groovy进行Socket编程之-字节数组版

阅读更多
服务端代码:
import java.net.ServerSocket

class TestSocketServer {
	static server

	static {
		server = new ServerSocket(6666)
	}
	static main(args) {
		println "SOCKET测试服务已启动,运行于端口6666,请勿关闭此窗口。。。。"
		
		while(true) {
			server.accept { socket ->
				println "\n========================================\n${new Date().format('yyyy-MM-dd HH:mm:ss')} 正在处理请求..."
				socket.withStreams { input, output ->

					byte[] msgBody = new byte[2000];
					input.read(msgBody, 0, 2000);
					def msg = new String(msgBody, 'GBK').trim()
					println "${new Date().format('yyyy-MM-dd HH:mm:ss')} 接收到的消息: \n========================================\n$msg"

					output << "服务器处理时间:" + new Date().format('yyyy-MM-dd HH:mm:ss') + "\n" + msg
					socket.shutdownOutput()
				}
				println "${new Date().format('yyyy-MM-dd HH:mm:ss')} 处理完毕!\n========================================"
			}
		}
        }
}




客户端调用代码:
import java.net.Socket
class Test {
	static main(args) {
		def sw = new StringWriter()
		def xml = new groovy.xml.MarkupBuilder(sw)
		xml.langs(type:"current", count:3, mainstream:true){
		  language(flavor:"static", version:"1.5", "Java")
		  language(flavor:"dynamic", version:"1.6.0", "Groovy")
		  language(flavor:"dynamic", version:"1.9", "JavaScript")
		  language(flavor:"测试", version:"2.2", "闲得蛋疼")
		}
		def s = new Socket("10.14.131.114", 6666);
		s.withStreams { input, output ->
			output << sw.toString()
			byte[] msgBody = new byte[2000];
			input.read(msgBody, 0, 2000);
			def msg = new String(msgBody, 'UTF8').trim()
			println "${msg.trim()}"
		}
	}
}
分享到:
评论

相关推荐

    Groovy In Action

    8. **网络编程**:介绍如何使用Groovy进行HTTP请求、Socket通信等网络编程。 9. **构建工具Grails与Gradle**:Groovy广泛应用于构建工具,如Grails(一个基于Groovy的Web应用框架)和Gradle(一个灵活的构建管理...

    Android/Java基于Socket接收结构体数据

    在Android和Java开发中,有时候...结合Socket编程,Javolution使得Java与其它系统之间的数据交换变得更加高效和便捷。在实际项目中,确保正确处理网络连接的生命周期、错误处理和资源释放,以保证程序的稳定性和性能。

    mina传递图片实例

    在Android中,虽然原生的Socket编程可以实现数据传输,但MINA提供了更高级的抽象层,简化了网络编程的复杂性。 首先,我们需要在Android项目中引入MINA库。这通常通过Maven或Gradle来完成,添加相应的依赖到构建...

    java大纲资料.txt

    - **发展背景**:随着互联网的发展,Java 成为了企业级应用、Web 应用和移动应用等领域的首选编程语言之一。 - **版本演进**:自 1995 年以来,Java 经历了多次重大更新,包括 Java 2 (J2SE)、Java 5、Java 8 等,...

    JDK1.7版本,纯绿色版本解压即可使用无需安装

    JDK 1.7绿色版的使用,使得开发者能够在不干扰系统全局配置的情况下,轻松地进行Java开发工作,尤其是在共享计算机或者多项目环境中,这样的灵活性尤为关键。然而,由于Java版本不断更新,为了获取最新的安全补丁和...

    java代码入门

    Java的基础语法包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位运算符等)、流程控制(如if条件语句、for循环、while循环、switch-case语句)以及数组的使用。 2. **类与...

    javaSE代码实例

    16.1.1 多线程编程的意义 343 16.1.2 定义自己的线程 344 16.1.3 创建线程对象 345 16.1.4 启动线程 347 16.1.5 同时使用多个线程 348 16.2 线程的状态 350 16.3 线程的调度 351 16.3.1 睡眠 351 ...

    java的一些学习心得

    6. 网络编程:Java提供了Socket和ServerSocket类进行网络编程,可以实现客户端-服务器通信,是构建分布式系统的基础。 7. JDBC数据库连接:Java Database Connectivity(JDBC)允许Java程序与各种数据库进行交互,...

    jdk api文档

    5. 动态语言支持:JSR 292添加了对动态语言的支持,允许Java虚拟机(JVM)执行字节码之外的语言,如Groovy或Scala。 总结,JDK1.6和1.7的API文档是Java开发者的宝贵财富,它们涵盖了Java语言和核心库的全面信息。...

    JAVA上百实例源码以及开源项目源代码

    Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...

    Java API 1.6中文版

    5. **网络编程**:Socket和ServerSocket类用于实现客户端-服务器通信,URL和URLConnection类支持网络资源的访问。 6. **异常处理**:Exception类及其子类构成异常处理体系,使得程序在遇到错误时能够优雅地处理。 ...

    Java-Development-2021

    8. **网络编程**:Java的Socket编程提供TCP/IP连接,ServerSocket和Socket类用于建立客户端和服务器之间的通信。 9. **反射API**:反射机制允许程序在运行时检查类、接口、字段和方法的信息,甚至动态调用方法和...

    JavaSE6_API

    5. **网络编程**:`java.net`包提供了网络通信的能力,如`Socket`、`ServerSocket`、`URL`和`URLConnection`,可以用来进行TCP/IP和HTTP通信。 6. **异常处理**:Java的异常处理机制通过`try-catch-finally`语句和`...

    Practica4:实践资料库4

    8. **网络编程**:Java提供了丰富的API来进行网络编程,如Socket和ServerSocket类用于TCP连接,URL和URLConnection类用于HTTP通信。 9. **Java标准库**:Java的类库包含大量的预定义类和接口,如util、io、lang等包...

    my-test

    10. **网络编程**:Java的Socket类和ServerSocket类提供了网络通信的能力,可以用于创建客户端和服务器应用程序。 11. **JDBC**:Java Database Connectivity是Java访问数据库的标准API,可以用来连接、查询、更新...

    test:测试第一次项目

    Java项目常使用Maven或Gradle进行依赖管理和构建。Maven通过POM.xml文件管理项目依赖,而Gradle则采用Groovy或Kotlin DSL定义构建脚本。 5. **IDE集成**:开发Java项目时,常见的集成开发环境(IDE)有Eclipse、...

    恩舒

    9. **网络编程**:Java提供Socket和ServerSocket类进行网络通信,可以创建TCP和UDP客户端和服务端。 10. **Swing和JavaFX**:这两者是Java的图形用户界面(GUI)工具包,用于构建桌面应用程序。Swing是老一代的选择...

Global site tag (gtag.js) - Google Analytics