文章目录
一、服务器端 ServerSocket 开发
1、创建服务器端套接字 ServerSocket
2、接收客户端数据线程
3、向服务器端发送数据线程
二、客户端端 Socket 完整代码示例
一、服务器端 ServerSocket 开发
1、创建服务器端套接字 ServerSocket
在客户端 , 创建 Socket 套接字 , 传入服务器端的 IP 地址 和 端口号 ;
该方法执行成功后 , 会响应触发 服务器端 ServerSocket 的 accept 方法 , 服务器端就可以得到与该 客户端 Socket 相应的连接 ;
代码示例 :
// 客户端套接字 def client = new Socket("127.0.0.1", 8088)
2、接收客户端数据线程
调用客户端 Socket 的 getInputStream 获取输入流 , 然后读取服务器端 发送给 客户端的 byte 数组数据 ;
// 接收线程 , 读取服务器端传输的内容 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)}" } } }
3、向服务器端发送数据线程
调用客户端 Socket 的 getOutputStream 获取输出流 , 然后写出相应 byte 数组数据到服务器端 ;
下面代码的 outputStream 就是调用了 Socket client 的 getOutputStream 获取输出流 ;
代码示例 :
// 发送线程 , 向服务器端发送数据 Thread.start { client.outputStream.write("Hello Server , This is Client !".getBytes()) }
二、客户端端 Socket 完整代码示例
// 客户端套接字 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()) }