【改进版】 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