简单实现socket编程客户端和服务端Demo

服务端:

package com.provy.guard.api.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {

	public static void main(String[] args) {
		try {
			// 创建服务器socket对象
			ServerSocket ss = new ServerSocket(20171);
			// 监听客户端连接
			Socket s = ss.accept();
			// 接收客户端数据
			InputStream is = s.getInputStream();
			byte[] bys = new byte[1024];
			int len = is.read(bys);
			String clientMsg = new String(bys, 0, len);
			System.out.println("接收到客户端发送的数据:" + clientMsg);
			// 响应客户端数据
			OutputStream os = s.getOutputStream();
			os.write("数据已收到".getBytes());
			// 释放资源
			s.close();
			ss.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

客户端:

package com.provy.guard.api.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

public class ClientDemo {
	public static void main(String[] args) {
		try {
			// 创建客户端socket服务对象
			Socket s = new Socket("192.168.1.35", 20171);
//			Socket s = new Socket("127.0.0.1", 20171);
			// 发送数据
			String msg = getPadDetails();// 获取设备详情
			OutputStream os = s.getOutputStream();
			os.write(msg.getBytes());
			// 获取服务端返回数据
			InputStream is = s.getInputStream();
			byte[] bys = new byte[1024];
			int len = is.read(bys);
			String serverMsg = new String(bys, 0, len);
			System.out.println(serverMsg);
			// 释放资源
			s.close();

		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取pad详细信息
	 * 
	 * @return
	 */
	public static String getPadDetails() {
		JSONObject msg = JSONUtil.createObj();
		msg.put("req_id", System.currentTimeMillis());
		msg.put("flag", "2");
		msg.put("op", "getPadDetails");
		msg.put("serial_no", "c25223b394b506cb");
		return msg.toString();
	}

}


你可能感兴趣的:(简单实现socket编程客户端和服务端Demo)