关于Socket通信

package socket;

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

/**
 * @describe 服务端
 * @author lxh
 * @date 2018年3月20日
 */
public class SocketServer {
	
	public static void main(String[] args) {
		SocketServer server = new SocketServer();
		server.oneServer();
	}
	
	public void oneServer() {
		/*
		 *  a)、创建ServerSocket对象绑定监听端口。
		 *	b)、通过accept()方法监听客户端的请求。
		 *	c)、建立连接后,通过输入输出流读取客户端发送的请求信息。
		 *	d)、通过输出流向客户端发送请求信息。
		 *	e)、关闭相关资源。
		 */
		try {
			//1.创建ServerSocket对象并监听端口
			ServerSocket server = null;
			try {
				server = new ServerSocket(5200);
				System.out.println("服务器启动成功...");
			} catch (Exception e) {
			    System.out.println("没有监听到"+e);
			}
			//2.调用accept()方法,等待客户端的连接 
			Socket socket = null;
			try {
				socket = server.accept();
			} catch (Exception e) {
				System.out.println("Error"+e);
			}
			//3.获取输入流,输出流,并读取客户端信息
			String line;
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter out = new PrintWriter(socket.getOutputStream());
			
			//4.获取键盘输入流
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			
			System.out.println("client:"+in.readLine());
			
			line = br.readLine();
			while(!line.equals("end")) {
				out.println(line);
				out.flush();
				System.out.println("server"+line);
				System.out.println("client"+in.readLine());
				line = br.readLine();
			}
			//5.关闭资源
			out.close();
			in.close();
			socket.close();
			server.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package socket;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
 * @describe 客戶端
 * @author lxh
 * @date 2018年3月20日
 */
public class SocketClient {
	
	public static void main(String[] args) {
		SocketClient client = new SocketClient();
		client.call();
	}
	
	public void call() {
		/*
		 *  a)、创建Socket对象,指明需要连接的服务器的地址和端口。
		 *	b)、建立连接后,通过输出流向服务器发送请求信息。
		 *	c)、通过输入流获取服务器的响应信息。
		 *	d)、关闭响应资源
		 */
		try {
			//创建客户端Socket,制定服务器IP及端口
			Socket socket = new Socket("192.163.20.87",5200);
			System.out.println("客户端启动成功...");
			//获取键盘输入流
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			PrintWriter out = new PrintWriter(socket.getOutputStream());
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			String readLine;
			readLine = br.readLine();
			while(!readLine.equals("end")) {
				out.println(readLine);
				out.flush();
				System.out.println("client:"+readLine);
				System.out.println("server:"+in.readLine());
				readLine = br.readLine();
			}
			out.close();
			in.close();
			socket.close();
		} catch (Exception e) {
			System.out.println("can not listen to:"+e);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值