利用Socket套接字实现简单通信

复习了下网络编程,整理一下,方便以后再复习

小明是服务器端,小红是客户端,小红发消息给小明,可实时输出,小明回复消息给小红亦如此

小明代码:

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 MingServer{

	public static void main(String[] args){
		ServerSocket socket;
		Socket accept ;
		BufferedReader br;
		try {
			socket = new ServerSocket(5209);
			System.out.println("我是小明,已经激活!");
			//监听小红
			accept = socket.accept();
			
			//小红传过来的消息  hong
			br = new BufferedReader(new InputStreamReader(accept.getInputStream()));
			//打印小红发过来的消息
			System.out.println("小红:"+br.readLine());
			
			PrintWriter pw = new PrintWriter(accept.getOutputStream());
			
			//小明(自己)输入要发送给小红的字符串str
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
			String str = reader.readLine();
			
			//如果小明输入的字符串是“end”就结束循环
			while(!"end".equals(str)) {
				//将小明(自己)输入的字符串输出到小红那里去
				pw.println(str);
				pw.flush();//刷新输出流,让小红可以马上收到str
				
				System.out.println("小红:"+br.readLine());
				//继续读取小明输入的字符串
				str = reader.readLine();
			}
			br.close();
			pw.close();
			accept.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

小红代码:

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

public class HongClient{

	public static void main(String[] args) {
		Socket socket;
		try {
			//InetAddress.getLocalHost()可改成IP地址,端口号可自定义
			socket = new Socket(InetAddress.getLocalHost(), 5209);
			System.out.println("我是小红,已激活!");
			//小红发送的消息hong(从键盘输入的)
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String hong = br.readLine();
			
			PrintWriter pw = new PrintWriter(socket.getOutputStream());
			
			//小明传过来的消息  line
			BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			//小红输入的字符串中读到end就终止
			while(!"end".equals(hong)){
				//小红发送的消息输出到小明处
				pw.println(hong);
				pw.flush(); //刷新输出流,让小明可以马上收到hong
				
				//打印小明发的消息
				System.out.println("小明:"+reader.readLine());
				
				//继续读取小红输入的字符串s
				hong = br.readLine();			
			}
			reader.close();
			pw.close();
			br.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

代码可直接运行,先运行小明,再启动小红,发送end结束进程


猜你喜欢

转载自blog.csdn.net/sinat_30126855/article/details/80474074