socket+io通信简单demo

一对一socket应用,单线程应用。
客户端:

package socket.demo2;
import java.io.*;
import java.net.Socket;
public class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("127.0.0.1", 8899);

            /**
             * 输入流:将存储设备中的内容读到内存中
             * 输出流:将内存中内容写入到存储设备中
             *
             * 文件(存储设备)--(输入流)-->程序(内存)--(输出流)-->文件
             */

            /**
             * 字节流:以字节为单位,可以读到所有数据
             * 字节输入流:InputStream
             * 字节输出流:OutputStream
             */

            /**
             * 1.从服务器端发送数据写入到程序(内存)中 ,连接成功后,服务器端发送的数据都能接收到
             */

            /**
             * 字节输入流
             */
            InputStream inputStream = socket.getInputStream();

            /**
             * 字符流:以字符为单位,只能读写文本数据
             * 字符输入流:Reader
             * 字符输出流: Writer
             */

            /**
             * 字符输入流
             */
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

            /**
             * 缓冲流:提高io效率,减少访问磁盘次数
             * 数据存储在缓冲区中,flush是将缓冲区数据写入文件或读到内存中,刷新缓冲区,close是关闭缓冲区
             */

            /**
             * 缓冲输入流
             */
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            /**
             * 2.将客户端信息反馈到服务器端
             */

            /**
             * 字符输出流
             */
            OutputStream outputStream = socket.getOutputStream();
            /**
             * 缓冲输出流
             */
            PrintWriter printWriter = new PrintWriter(outputStream);

            /**
             * 以上两个操作
             * 字节流--(增强功能)-->字符流--(增强功能)-->缓冲流
             */

            /**
             * 键盘输入字符
             */
            InputStreamReader inputStreamReader1 = new InputStreamReader(System.in);
            BufferedReader bufferedReader1 = new BufferedReader(inputStreamReader1);

            /**
             * 缓冲流读键盘输入行,回车读结束
             */
            String s = bufferedReader1.readLine();

            while (!s.equals("exit")){


                /**
                 * 打印键盘输入的字符
                 */
                printWriter.println(s);
                /**
                 * 刷新缓冲流,推数据给服务器端
                 */
                printWriter.flush();

                /**
                 * 读服务器端键盘输入字符
                 */
                System.out.println("client发送消息:"+s);
                System.out.println("server发送消息:"+bufferedReader.readLine());
                /**
                 * 键盘重新输入,重新发送给服务器端
                 */
                s=bufferedReader1.readLine();
            }

            /**
             * 程序结束,释放资源
             */
            bufferedReader1.close();
            printWriter.close();
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务器端:

package socket.demo2;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8899);

            Socket accept = serverSocket.accept();
            InputStream inputStream = accept.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            OutputStream outputStream = accept.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream);

            InputStreamReader inputStreamReader1 = new InputStreamReader(System.in);
            BufferedReader bufferedReader1 = new BufferedReader(inputStreamReader1);

            String s = bufferedReader1.readLine();
            while (!s.equals("exit")){

                printWriter.println(s);
                printWriter.flush();
                System.out.println("server发送消息:"+s);
                System.out.println("Clent发送消息:"+bufferedReader.readLine());
                s=bufferedReader1.readLine();
            }
            bufferedReader1.close();
            printWriter.close();
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值