`
changkunyang
  • 浏览: 30419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个简单的socket实例

    博客分类:
  • JAVA
阅读更多

这就是一个简单的socket编程的实例,大道理就不说了,直接上代码,有代码才有真相。具体见代码里的注释。

 

服务器端:

package com.socket.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class P2PServer {
	private ServerSocket server;
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;

	public P2PServer() {
		try {
			try {
				// 创建一个ServerSocket在指定端口监听客户请求
				server = new ServerSocket(8099);
			} catch (Exception e) {
				System.out.println("can not listen to:" + e);
			}
			try {
				// 使用accept()阻塞等待客户请求,有客户
				socket = server.accept();
				// 请求到来则产生一个Socket对象,并继续执行
			} catch (IOException e) {
				System.out.println("Error." + e);
				// 出错,打印出错信息
			}

			/**
			 * 接收客户端写入的信息
			 */
			// 由Socket对象得到输入流,并构造相应的BufferedReader对象
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			System.out.println("from Client:" + in.readLine());
			
			
			/**
			 * 将信息输出到客户端
			 */
			String line = "当然没问题";
			System.out.println("from server to Client:" + line);
			// 由Socket对象得到输出流,并构造PrintWriter对象
			out = new PrintWriter(socket.getOutputStream());
			// 向客户端输出该字符串
			out.println(line);
			// 刷新输出流,使Client马上收到该字符串
			out.flush();

			
			out.close(); // 关闭Socket输出流
			in.close(); // 关闭Socket输入流
			socket.close(); // 关闭Socket
			server.close(); // 关闭ServerSocket

		} catch (Exception e) {
			System.out.println("Error:" + e);
		}

	}

	public static void main(String[] args) {
		new P2PServer();
	}

}

 

 

客户端:

package com.socket.client;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class P2PClient {
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;

	public P2PClient() {
		try {
			// 准备发送给服务器端的信息
			String readline="hello ,服务端.我想请求你,可以吗 "; 
			
			/**
			 * 向服务器端发信息
			 */
			// 向XXX(可以使域名或IP地址,具体参见api)的8099端口发出客户请求
			socket = new Socket("localhost", 8099);
			// 由Socket对象得到输出流,并构造PrintWriter对象
			out = new PrintWriter(socket.getOutputStream());
			// 将readline字符串输出到Server
			out.println(readline);
			// 刷新输出流,使Server马上收到该字符串
			out.flush();

			/**
			 * 读取从服务器端返回信息
			 */
			// 由Socket对象得到输入流,并构造相应的BufferedReader对象
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			// 从Server读入一字符串,并打印到标准输出上
			System.out.println("from Server:" + in.readLine());

			out.close(); // 关闭Socket输出流
			in.close(); // 关闭Socket输入流
			socket.close(); // 关闭Socket

		} catch (Exception e) {
			System.out.println("Error" + e); // 出错,则打印出错信息
		}

	}

	public static void main(String[] args) {
		new P2PClient();
	}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics