复习了下网络编程,整理一下,方便以后再复习
小明是服务器端,小红是客户端,小红发消息给小明,可实时输出,小明回复消息给小红亦如此
小明代码:
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结束进程