Socket的基本使用

socket是什么

套接字,可以用作传输之一,有TCP协议和UDP协议,其他自己百度。。。

服务端

服务端一般采用多线程方式

public class SocketThread implements Runnable {

	private Socket socket;

	public SocketThread(Socket socket) {
		this.socket = socket;
	}

	@Override
	public void run() {
		try {
			/**
			 * 1、socket的交互都是从输入输出流中获取
			 * 	    你获取别人的请求从输入流中获取
			 * 	    你需要响应给别人就写到输出流中
			 */
			//从输入流中拿到请求
			InputStream inputStream = socket.getInputStream();
			InputStreamReader reader = new InputStreamReader(inputStream);
			BufferedReader bufferedReader = new BufferedReader(reader);
			String message = "";
			String temp = null;
			while ((temp = bufferedReader.readLine()) != null) {
				message = message + temp;
			}
			System.out.println("socket服务端接受到的消息为:" + message);

			/**
			 * 响应消息
			 */
			OutputStream outputStream = socket.getOutputStream();
			PrintWriter printWriter = new PrintWriter(outputStream);
			printWriter.println("请求成功");
			printWriter.flush();
			socket.shutdownOutput();

			//以上所有开了的全部都要记得关闭
			printWriter.close();
			outputStream.close();
			bufferedReader.close();
			inputStream.close();
			reader.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
public class NetService {

	public static void main(String[] args) {
		
		 try {
			 //需要指定没用使用的端口号
			ServerSocket serverSocket = new ServerSocket(12345);
			System.out.println("服务端已启动");
			//死循环,一直监听
			while(true){
				//开始监听所有传进来的
				Socket socket = serverSocket.accept();
				SocketThread socketThread = new SocketThread(socket);
				new Thread(socketThread).start();;
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
}

客户端代码如下

public class SocketClient {
	
	public static void main(String[] args) {
		try {
			//IP+端口号
			Socket socket = new Socket("127.0.0.1",12345);
			OutputStream outputStream = socket.getOutputStream();
			PrintWriter printWriter = new PrintWriter(outputStream);
			printWriter.write("网贷核心请求报文:我是你大爷");
			printWriter.flush();
			socket.shutdownOutput();
			
			InputStream inputStream = socket.getInputStream();
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
			String message = "";
			String rsp = null;
			while((rsp = bufferedReader.readLine()) != null){
				message = message + rsp;
			}
			System.out.println("socketService响应报文:"+message);
			
			bufferedReader.close();
			inputStreamReader.close();
			inputStream.close();
			printWriter.close();
			outputStream.close();
			socket.close();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

这样就完成了简单的socket请求和响应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值