ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-05-17 20:31:07  阅读:153  来源: 互联网

标签:null socket System Tcp 传输数据 println new 改进版 out


 

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

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

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

 

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

注意:

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

 

服务端:

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

/***
 * 服务器端
 */
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("---服务端已启动---");
//            让服务器循环,一直处理
            while (true){
                socket = serverSocket.accept();//接收并返回一个对象
//                取出消息
                inputStream = socket.getInputStream();//获取客户

                System.out.println("客户已连接");
//                封装进入的信息
                BufferedReader str = new BufferedReader(new InputStreamReader(inputStream, "gbk"));
                String s = str.readLine();
//                System.out.println("输入进入的信息:");
                System.out.println("接收到了客户端请求:"+s);

//                返回消息给客户端
                outputStream= socket.getOutputStream();
                BufferedWriter gbkout = new BufferedWriter(new OutputStreamWriter(outputStream, "gbk"));
                System.out.println(socket);
                dataOutputStream= new DataOutputStream(outputStream);
                String response= "helloaaaaaaaaaaaaaaaaaaaaaaa是是是";
                gbkout.write(response);
                dataOutputStream.writeUTF(response);
                System.out.println("ok..");
//                dataOutputStream.writeUTF(response);




            }


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

    }
}

 

标签:null,socket,System,Tcp,传输数据,println,new,改进版,out
来源: https://www.cnblogs.com/Hello233/p/16282265.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有