socket客户端与服务端的简单Demo

   与外系统开发接口,发现系统采用的是Socket来做通信的,整理个简单的Demo,复习下基础。

   客户端Demo

复制代码
 1 package com.socket;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.io.OutputStream;
 6 import java.net.Socket;
 7 
 8 public class SocketClientDemo {
 9     public static void main(String[] args) {
10         Socket sc = null;
11         InputStream ips = null;
12         OutputStream ops = null;
13         try {
14             // 设置发送服务端的ip和端口
15             sc = new Socket("127.0.0.1", 8081);
16             // 设置超时时间
17             sc.setSoTimeout(10000);
18             // 发送服务端
19             ops = sc.getOutputStream();
20             ops.write("Socket客户端发送请求报文内容".getBytes("UTF-8"));
21             ops.flush();
22             System.out.println("客户端报文发送完毕");
23             
24             // 接受服务端响应的内容
25             ips = sc.getInputStream();
26             byte[] rsp = new byte[256];    
27             // 将服务端返回的字节流读入字节数组
28             ips.read(rsp);
29             // 将字节流数组安装UTF-8的格式转换为String类型
30             String rspStr = new String(rsp, "UTF-8");
31             System.out.println("服务端返回的响应为:" + rspStr);
32             
33         } catch (Exception e) {
34             e.getStackTrace();
35         }finally {
36             
37             // 关闭流
38             if(ips != null) {
39                 try {
40                     ips.close();
41                 } catch (IOException e) {
42                     e.printStackTrace();
43                 }
44             }
45             if(ops != null) {
46                 try {
47                     ops.close();
48                 } catch (IOException e) {
49                     e.printStackTrace();
50                 }
51             }                                
52             // 关闭Socket
53             if(sc != null) {
54                 try {
55                     sc.close();
56                 } catch (IOException e) {
57                     e.printStackTrace();
58                 }
59             }
60         }
61         
62     }
63 }
View Code
复制代码

  服务端Demo

复制代码
 1 package com.socket;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.io.OutputStream;
 6 import java.net.ServerSocket;
 7 import java.net.Socket;
 8 
 9 public class SocketServerDemo {
10     public static void main(String[] args) {
11         ServerSocket ss = null;
12         InputStream ips = null;
13         OutputStream ops = null;
14         try {
15             // 服务端监听8081端口
16             ss = new ServerSocket(8081);
17             System.out.println("服务端已启动");
18             // 阻塞等待客户端请求
19             Socket accept = ss.accept();
20             // 获取客户端的输入流
21             ips = accept.getInputStream();
22             byte[] reqByte = new byte[256];
23             // 将输入流的内容读入字节数组
24             ips.read(reqByte);
25             String reqStr = new String(reqByte, "UTF-8");
26             System.out.println("服务端接收到客户端请求报文:" + reqStr);
27             
28             // 服务端返回信息给客户端
29             ops = accept.getOutputStream();
30             ops.write("服务端已收到客户端的请求".getBytes("UTF-8"));
31             ops.flush();
32             System.out.println("服务端响应完毕");
33             
34         } catch (Exception e) {
35             e.getStackTrace();
36         }finally {
37             // 关闭流
38             if(ips != null) {
39                 try {
40                     ips.close();
41                 } catch (IOException e) {
42                     e.printStackTrace();
43                 }
44             }
45             if(ops != null) {
46                 try {
47                     ops.close();
48                 } catch (IOException e) {
49                     e.printStackTrace();
50                 }
51             }                                
52             // 关闭Socket
53             if(ss != null) {
54                 try {
55                     ss.close();
56                 } catch (IOException e) {
57                     e.printStackTrace();
58                 }
59             }
60         }
61     }
62 }
View Code
复制代码

 

posted @   无虑的小猪  阅读(215)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示