复习下网络编程知识,顺便模拟聊天功能实现客户端服务器数据交互

服务器代码


```java
package com.itcast.test;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test1 {
    //服务器
    public static void main(String[] args) throws Exception {
        //创建服务器端
        ServerSocket sr = new ServerSocket(30000);
        //从服务器获取客户端
        Socket accept = sr.accept();//获取客户端
        //创建指向客户端的输出流
        PrintStream ps = new PrintStream(accept.getOutputStream());//打印输出流
        //创建指向客户端的输入流
        BufferedReader br = new BufferedReader(new InputStreamReader(accept.getInputStream()));//读取输入流
        //开启服务器输出流线程
        //用于将控制台的内容发送给客户端
        new Thread() {
            @Override
            public void run() {
                //创建指向控制台的输入流
                Scanner sc = new Scanner(System.in);
                while (true) {
                    //读取控制台的内容
                    String s1 = sc.nextLine();
                    //将从控制台读取到的内容发送到客户端
                    ps.println(s1);
                }
            }
        }.start();
        //开启客户端输入流线程
        //用于将从客户端接收到的数据打印到控制台
        new Thread() {
            @Override
            public void run() {
                while (true) {
                    String s1 = null;
                    try {
                        //读取来自客户端的一行字符串
                        s1 = br.readLine();
                        //获取当前日期打印到控制台
                        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                    } catch (IOException e) {

                    }
                    //打印从客户端接收到的字符数据
                    System.out.println(s1);
                }
            }
        }.start();
    }
}




```java
package com.itcast.test;
import java.io.*;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test2 {
        //客户端
        //增强版
        public static void main(String[] args) throws Exception {
            //创建客户端  访问127.0.0.1的服务器 端口30000的应用
            Socket s = new Socket("127.0.0.1", 30000);
            //获取指向服务器的输出流
            PrintStream ps = new PrintStream(s.getOutputStream());//打印输出流
            //获取指向服务器的输入流
            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取输入流
            //创建输出流线程
            //用于将读取到的字符串发送到服务器
            new Thread() {
                @Override
                public void run() {
                    //创建指向控制台的输入流
                    Scanner sc = new Scanner(System.in);
                    while (true) {
                        //读取来自控制台的一行字符串
                        String s1 = sc.nextLine();
                        //将读取到的字符串发送到服务器
                        ps.println(s1);
                    }
                }
            }.start();
            //创建输入流线程
            //用于将从服务器获取到的字符串打印到控制台
            new Thread() {
                @Override
                public void run() {
                    while (true) {
                        String s1 = null;
                        try {
                            //读取来自服务器的一行字符
                            s1 = br.readLine();
                            System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                        } catch (IOException e) {
                        }
                        System.out.println(s1);
                    }
                }
            }.start();
        }
}




结果如下:![在这里插入图片描述](https://img-blog.csdnimg.cn/20191201120728456.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjgzNzIz,size_16,color_FFFFFF,t_70)



![在这里插入图片描述](https://img-blog.csdnimg.cn/20191201120823813.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjgzNzIz,size_16,color_FFFFFF,t_70)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值