第二十一讲:网络编程(一)
如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!
第二十一讲:网络编程(一)
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 TalkServer { public static void main(String[] args) throws IOException { // 创建一个ServerSocket ServerSocket server = new ServerSocket(8080); // 准备接受客户连接,如果有客户连接到,则创建一个socket对象,如果没有客户连接到,那么该程序会停在本行一直等待,像是在睡眠或者假死,这种行为叫做“阻塞”,阻塞是网络通信中的术语,就是你等别人响应,如果必须等到,等不到就一直等,就是阻塞,等不到也继续向前走的当然就是非阻塞。 Socket socket = server.accept(); // 从socket中获取一个输入对象,以便接受从网络上来的数据 BufferedReader socketInput = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 从标准输入中获取一个输入对象,以便接受从键盘上传来的数据,如果想让服务器端和客户端自由对话的话可以用此对象 //BufferedReader keyboardInput = new BufferedReader(new InputStreamReader(System.in)); // 从socket中获取一个 PrintWriter socketOutput = new PrintWriter(socket.getOutputStream(),true); //定义一些变量 String input; // 一直执行,直到客户端表示要断开 while(true){ //从客户端获取用户输入的字符串 input = socketInput.readLine(); //发送到屏幕 System.out.print("客户:"); System.out.println(input); //准备好回复语句 String reply= reply(input); //发送到客户端 socketOutput.println(reply); //发送到屏幕 System.out.print("小瑶瑶:"); System.out.println(reply); //客户如果输入的是再见则退出循环 if(input.equals("再见")){ break; } } //关闭释放资源 socketInput.close(); socketOutput.close(); socket.close(); } //回复方法 private static String reply(String input) { String output=replys[number%7]; if(number%7==5){ output = output+" "+input; } number++; return output; } //回复方法用到的一些变量 static int number =0; static String[] replys = new String[7]; static{ replys[0]= "你说的啥,我听不见?"; replys[1]= "声音再大点行不?"; replys[2]= "声音再大点一点点行不?"; replys[3]= "还是听不清……"; replys[4]= "看来是网络的问题,你要不说慢点?"; replys[5]= "听到了!听到了!你说的是:"; replys[6]= "完了,又听不清了……"; } }客户端代码 TalkClient.java :
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class TalkClient { public static void main(String[] args) throws UnknownHostException, IOException { Socket socket = new Socket("127.0.0.1",8080); // 从socket中获取一个输入对象,以便接受从网络上来的数据 BufferedReader socketInput = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 从标准输入中获取一个输入对象,以便接受从键盘上传来的数据 BufferedReader keyboardInput = new BufferedReader(new InputStreamReader(System.in)); // 从socket中获取一个 PrintWriter socketOutput = new PrintWriter(socket.getOutputStream(),true); // 定义一些变量 String input; // 一直执行 while(true){ //从键盘获取数据,通过socket对象发送出去 input = keyboardInput.readLine(); socketOutput.println(input); //接收从socket中获取的服务器端发回的回应信息,并发送到屏幕上 input = socketInput.readLine(); System.out.println(input); } } }编译两个文件,先运行TalkServer,开始接收客户端的连接,然后运行客户端,在客户端上打字,服务器端会有回应,运行截图如下,这里上一个服务器端的截图:

- 分类:
- Java
更新时间: