博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket通信之单client端,单线程
阅读量:5833 次
发布时间:2019-06-18

本文共 2994 字,大约阅读时间需要 9 分钟。

hot3.png

Server端代码

package wbf.socket;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Server {	public static void main(String[] args) {		ServerSocket server = null;		Socket socket  = null;		InputStream input = null;		OutputStream output = null;		try {			System.out.println("socket启动,等待客户端连接。。。");						//启动server端,等待客户端连接			server = new ServerSocket(9999);			socket = server.accept();						//接收client端发送的消息			input = socket.getInputStream();			byte[] bytes = new byte[1024];			int len;			StringBuilder builder = new StringBuilder();			while ((len = input.read(bytes)) != -1) {				System.out.println("读到的消息:" + new String(bytes, 0, len, "UTF-8"));				builder.append(new String(bytes, 0, len, "UTF-8"));			}			System.out.println(builder);						//接收到client消息后,作出回复			//当前状态下,OutputStream需要关闭,否则client端接收消息时无法知道server的回复消息是否已经结束,会死循环等待			output = socket.getOutputStream();			output.write("你好client,我是server".getBytes("UTF-8"));					} catch (IOException e) {			e.printStackTrace();		} finally {			if (output != null) {				try {					output.close();				} catch (IOException e) {					e.printStackTrace();				}			}			if (input != null) {				try {					input.close();				} catch (IOException e) {					e.printStackTrace();				}			}			if (socket != null) {				try {					socket.close();				} catch (IOException e) {					e.printStackTrace();				}			}			if (server != null) {				try {					server.close();				} catch (IOException e) {					e.printStackTrace();				}			}		}	}}

Client端代码

package wbf.socket;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class Client {	public static void main(String[] args) {		Socket socket = null;		OutputStream output = null;		InputStream input = null;		try {			//连接server端,并通过OutputStream想server端发送第一条消息			socket = new Socket("localhost", 9999);			System.out.println("client连接成功。");			output = socket.getOutputStream();			output.write("你好server,我是client".getBytes("UTF-8"));						//通过该方法,告诉server端消息已经发送完毕,server端就停止接收消息			socket.shutdownOutput();						//client端发送完消息后,启动InputStream等待接收server端的消息			input = socket.getInputStream();			byte[] bytes = new byte[1024];			int len;			StringBuilder builder = new StringBuilder();			while ((len = input.read(bytes)) != -1) {				builder.append(new String(bytes, 0, len, "UTF-8"));			}			System.out.println(builder);					} catch (UnknownHostException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		} finally {			if (input != null) {				try {					input.close();				} catch (IOException e) {					e.printStackTrace();				}			}			if (output != null) {				try {					output.close();				} catch (IOException e) {					e.printStackTrace();				}			}			if (socket != null) {				try {					socket.close();				} catch (IOException e) {					e.printStackTrace();				}			}		}	}}

 

转载于:https://my.oschina.net/wangbaofeng/blog/1824970

你可能感兴趣的文章