Java客户端与服务器端的超简易通讯2

来源:互联网 发布:酒店前台软件系统 编辑:程序博客网 时间:2024/06/05 04:15

上一片文章Java客户端与服务器端的超简易通讯1主要想实现的效果是:客户端发送几个文字到服务器端,而服务器端接收文字并将其输出,而这篇文章想实现的效果是:在客户端输入一些数据(例如:"Hello ServerSocket!"),并将这些数据发送给服务器端,在服务器端判断这些数据是否是服务器想要的,若为想要的,则返回数据给客户端(例如:"Hi Socket!"),并把客户端和服务器端所接收的数据都将其输出

好了,先贴出客户端的代码:

import java.io.DataInputStream;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintStream;import java.net.Socket;import java.util.Scanner;/** * 客户端代码 *  */public class ClientSocket {public static void main(String[] args) {try {// 创建一个socket,并开始连接服务器Socket s = new Socket("172.31.84.13", 80);// "192.168.1.105"为服务器的ip地址,80为服务器的端口后,这两个都不是固定的。//创建一个Scanner对象,用于输入Scanner sc = new Scanner(System.in);String socketData = sc.nextLine();// 创建一个输出流OutputStream os = s.getOutputStream();// 创建一个字节打印流,便于将数据储存到输出流中PrintStream ps = new PrintStream(os);// 将所输入的数据打印到输出流中ps.println(socketData);//创建一个输入流,用于读取用服务器中返回的数据InputStream is = s.getInputStream();//创建一个DataInputStream对象,便于读取输入流中的数据DataInputStream dis = new DataInputStream(is);//已UTF-8的格式读取输入流中的数据String request = dis.readLine();//输出所读取的数据System.out.println(request);// 关闭流对象,释放资源s.close();ps.close();os.close();is.close();dis.close();} catch (Exception e) {// 将错误报告输出e.printStackTrace();}}}

以下为服务器的代码:

import java.io.DataInputStream;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;/** * 服务器端代码 *  */public class ServerSocket1 {public static void main(String[] args) {try {//创建一个ServerSocket对象,并设置其端口ServerSocket ss = new ServerSocket(80);//设置一个无限循环,使服务器能无时无刻在检测是否有客户端发信息给服务器while (true) {//获取客户端的对象Socket s = ss.accept();//将客户端发送的输出流接收,在服务器的角度上看就是输入流InputStream is = s.getInputStream();//创建一个DataInputStream对象,便于解析所接受的输入流DataInputStream dis = new DataInputStream(is);//读取输入流中的一行数据,并将其赋值给一个字符串记录String request = dis.readLine();//将字符串输出System.out.println(request);//创建一个输出流,并将其返回给客户端OutputStream os = s.getOutputStream();// 创建一个字节打印流,便于将数据储存到输出流中PrintStream ps = new PrintStream(os);//判断客户端所发送的数据是否为服务器所需要的if (request.equals("Hello ServerSocket!")) {ps.println("Hi Socket!");} else {ps.println("smile~");}//关闭Socket对象,节省资源s.close();}} catch (Exception e) {//将错误报告输出e.printStackTrace();}}}

以下为客户端的运行结果:

客户端运行结果图片


以下为服务器的运行结果:

服务器运行结果2


以下为源码:

Java客户端与服务器端的超简易通讯2

0 0