Java Socket通信的简单例子

服务端

/**
 * 建立ServerSocket监听,并使用Socket获取输出流输入流
 */
package codes17;

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	public static void main(String[] args) {
		ServerSocket ss = null;
		Socket s = null;
		PrintStream ps = null;
		try {
			ss = new ServerSocket(8899); // 创建一个ServerSocket,用于监听客户端Socket的连接请求
			while (true) { // 采用循环不断接受来自客户端的请求
				s = ss.accept(); // 每当接收到客户端Socket的请求时,服务端也对应产生一个Socket
				ps = new PrintStream(s.getOutputStream()); // 将Socket对应输出流包装成PrintStream
				ps.println("您好,您收到来自服务端的消息");
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null)
					ps.close();
				if (s != null)
					s.close();
				if (ss != null)
					ss.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

客户端

/**
 * 使用Socket建立于指定IP地址、指定端口的连接,并使用Socket获取输入流读取数据
 */
package codes17;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

	public static void main(String[] args) {
		Socket socket = null;
		BufferedReader br = null;
		try {
			socket = new Socket("127.0.0.1", 8899);

			br = new BufferedReader(new InputStreamReader(
					socket.getInputStream())); // 将Socket对应的输入流包装成BufferedReader
			String line = br.readLine();
			System.out.println("来自服务器端的数据:" + line);
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (br != null)
					br.close();
				if (socket != null)
					socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}


你可能感兴趣的:(Java Socket通信的简单例子)