MyServer2.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.xml.ws.Response;
/**
* 这是第一个服务器端程序,让它在9999端口监听
* 可以接收从客户端发来的消息
*/
public class MyServer2 {
public static void main(String []args){
MyServer2 ms2 = new MyServer2();
}
public MyServer2(){
try {
//在9992号端口监听
ServerSocket ss = new ServerSocket(9992);
//等待连接
Socket s = ss.accept();
//先接收客户端发来的信息
//要读取s中传递的数据 InputStream 读
InputStreamReader isr = new InputStreamReader(s.getInputStream());
//br是用来读取信息的
BufferedReader br = new BufferedReader(isr);
//我们通过pw,向s写数据,ture标识即时刷新
PrintWriter pw = new PrintWriter(s.getOutputStream(),true); //OutputStream写
//接收从控制台输入的信息
InputStreamReader isr2 = new InputStreamReader(System.in);
BufferedReader br2 = new BufferedReader(isr2);
while(true){
String infoFromClient = br.readLine();
System.out.println("客户端发来:" + infoFromClient);
if(infoFromClient.equals("bye")){
System.out.println("对话结束!");
s.close();
break;
}
//接收控制台输入的信息
System.out.println("输入您对客户说的话:" );
String response= br2.readLine();
pw.println(response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
MyClient2.java
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* 这是一个客户端程序,可以连接服务器端
*/
public class MyClient2 {
public static void main(String[] args){
MyClient2 mc2 = new MyClient2();
}
public MyClient2(){
try {
//Socket()连接某个服务器的服务端 127.0.0.1表示服务器ip
//9992就是端口号
System.out.println("服务器在9992监听.....");
Socket s = new Socket("127.0.0.1",9992);
//我们通过pw,向s写数据,ture标识即时刷新 //OutputStream写
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
//要读取s中传递的数据 InputStream 读
InputStreamReader isr2 = new InputStreamReader(s.getInputStream());
//br是用来读取isr中信息的
BufferedReader br2 = new BufferedReader(isr2);
while(true){
System.out.println("请输入您想对服务器说的话");
//客户端先从控制台接收
String info = br.readLine();
//然后发送给服务器
pw.println(info);
//退出对话
if(info.equals("bye")){
System.out.println("对话结束!");
s.close();
break;
}
//接收从服务器发来的话
String res = br2.readLine();
System.out.println("服务器说:" + res);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务端执行的输入和输出: //绿色字体是输入的
客户端执行的输入和输出: //绿色字体是输入的