其他分享
首页 > 其他分享> > 【改进版】 Tcp协议服务端和客户端传输数据

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

作者:互联网

 

前面一个版本的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