温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java中socket乱码的解决方法

发布时间:2020-06-26 15:10:09 来源:亿速云 阅读:3458 作者:Leah 栏目:编程语言

这期内容当中小编将会给大家带来有关java中socket乱码的解决方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

解决方法:

首先在服务端使用InputStreamReader指定客户端的输入流为utf-8编码,以及使用OutputStreamWriter指定输出流为utf-8编码;

然后在客户端同样的设置utf-8编码即可。

in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));

示例:

Server:

import java.io.*; import java.net.*; public class SocketServerEx1 {	public static void main(String args[]) {	System.out.println("Server");	ServerSocket serverSocket = null;	Socket clientSocket = null;	int connects = 0;	try {	serverSocket = new ServerSocket(82, 5);	//端口:82,最大链接数:5	//最多连接10次	while(connects < 10) {	connects++;	System.out.println("--------------------等待连接--------------------------");	clientSocket = serverSocket.accept();	//等待连接	System.out.println("第 " + connects + " 次连接");	ServiceClient(clientSocket);	}	serverSocket.close();	} catch(IOException ioe) {	System.out.println("Error: " + ioe);	}	}	public static void ServiceClient(Socket client) throws IOException {	System.out.println("已链接");	InputStreamReader inSR = null;	OutputStreamWriter outSW = null;	try {	//读取数据	inSR = new InputStreamReader(client.getInputStream(), "UTF-8");	BufferedReader br = new BufferedReader(inSR);	outSW = new OutputStreamWriter(client.getOutputStream(), "UTF-8");	BufferedWriter bw = new BufferedWriter(outSW);	String str = "";	while((str = br.readLine()) != null) {	str = str.trim();	System.out.println("收到客户端消息:" + str);	bw.write("已收到信息:" + str + " \r\n");	//向客户端反馈消息,加上分行符以便客户端接收	bw.flush();	}	} finally {	//System.out.println("Cleaning up connection: " + client);	inSR.close();	outSW.close();	client.close();	}	System.out.println("已断开");	} }

Client:

import java.io.*; import java.net.*; public class SocketClientEx1 {	public static void main(String[] args) {	System.out.println("Client");	try {	Socket clientSocket = new Socket("localhost", 82);	System.out.println("Client1:" + clientSocket);	DataInputStream dataIS = new DataInputStream(clientSocket.getInputStream());	InputStreamReader inSR = new InputStreamReader(dataIS, "UTF-8");	BufferedReader br = new BufferedReader(inSR);	DataOutputStream dataOS = new DataOutputStream(clientSocket.getOutputStream());	OutputStreamWriter outSW = new OutputStreamWriter(dataOS, "UTF-8");	BufferedWriter bw = new BufferedWriter(outSW);	//输入信息	byte bytes[] = new byte[100];	while(true) {	System.out.println("----------------------------------");	System.in.read(bytes);	String str = new String(bytes);	str = str.trim();	if (str == "exit") {	break;	}	//发送数据	bw.write(str + "\r\n");	//加上分行符,以便服务器按行读取	bw.flush();	//接收数据	while((str = br.readLine()) != null) {	str = str.trim();	System.out.println("服务器回复:" + str);	break;	}	}	inSR.close();	dataIS.close();	dataOS.close();	clientSocket.close();	} catch(UnknownHostException uhe) {	System.out.println("Error:" + uhe.getMessage());	} catch(ConnectException ce) {	System.out.println("Error:" + ce.getMessage());	} catch(IOException ioe) {	System.out.println("Error:" + ioe.getMessage());	} finally {	}	} }

上述就是小编为大家分享的java中socket乱码的解决方法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI