【改进版】 Tcp协议服务端和客户端传输数据

 

前面一个版本的tcp传输 有点问题

1.读取内容  发现如果两端不是同一种编码就会读取乱码,下面改进下可以自定义编码

2.只能读取一种类型编码文本

 

下面的版本改进编码读取问题,

注意:

读取内容的时候,readlin(),需要发送端那边 结尾加 ”\n“ 换行符,否则会消息阻塞

 

服务端:

public class tcpServer {
    public static void main(String[] args) throws IOException {
//        数据流对象
        ServerSocket serverSocket =null;
        OutputStream outputStream =null;
        DataOutputStream dataOutputStream=null;
        Socket socket =null;
        InputStream inputStream =null;
        DataInputStream dataInputStream =null;
//        ======================================================

        try {
            serverSocket = new ServerSocket(8080);//创建服务器端口
            System.out.println("---微信java服务端已启动---");
//            让服务器循环,一直处理
            while (true){
                socket = serverSocket.accept();//接收并返回一个对象
//                取出消息
                inputStream = socket.getInputStream();//获取客户
//                System.out.println("客户已连接");
//                封装进入的信息
                BufferedReader str = new BufferedReader(new InputStreamReader(inputStream, "gbk"));
                String  msg;
                while ((msg=str.readLine()) !=null){
                    msg +=  str.readLine();
                    System.out.println("消息日志["+msg+"]");//打印微信消息日志

                    outputStream= socket.getOutputStream();


                    //                    收到日志后进行处理
                   

                    System.out.println(wxid);//打印客户信息
                    dataOutputStream= new DataOutputStream(outputStream);
                    String response= "helloaaaaaaaaaaaaaaaaaaaaaaa是是是";
                    dataOutputStream.writeUTF(response);//返回数据



                }

//                msg =  str.lines().collect(Collectors.joining());
//                System.out.println("输入进入的信息:");
//                System.out.println("接收到了客户端请求:"+msg);

//                返回消息给客户端

//                dataOutputStream.writeUTF(response);

            }


        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            serverSocket.close();
            socket.close();
            inputStream.close();
            dataInputStream.close();
        }

    }
}

 

posted @ 2022-05-17 20:24  Hello霖  阅读(103)  评论(0编辑  收藏  举报