java socket中文乱码
java socket中文乱码怎么解决呢?不知道的小伙伴来看看小编今天的分享吧!
可以使用代码:
in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));
示例:
解决前:
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("已断开");
}
}
解决后:
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());
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 {
}
}
}
-
别克君越转向机油多久更换一次?
别克君越转向机油4万公里更换一次。转向机油是车辆转向机的润滑油,在车辆转向时起到润滑助力的作用,使得转向轻松。转向助力油需要定期进行检查更换。转向机油的更换方法如下:1、打开方...
问答查看全文>> -
2022年虐到心碎的扎心文案文字
1、你走之后,我得了一场大病,疼的我痛不欲生,后来我活过来了,却忘记了自己。2、恰到好处的喜欢最舒服,懂得分寸的关系最迷人。3、生活中本就充满了失望,不是所有的等待都能如愿以偿...
句子查看全文>> -
merceds me怎么读
中文读法就是梅赛德斯,这是奔驰推出的一项车联网功能。此功能是奔驰推出的一项比较强大的车载互联系统。此功能可以让车主在手机上查看车辆状态,实现车辆定位,拥有出行导航功能,紧急救援...
问答查看全文>> -
启辰t70是合资车还是国产车
启辰t70是国产车,启辰是一个自主品牌。启辰t70是启辰旗下的一款紧凑型suv,这款车的轴距为2630毫米,长宽高分别是4614毫米,1786毫米,1625毫米。启辰t70一共...
问答查看全文>> -
关于谷雨的优美句子 关于谷雨的古诗
1、月季花落只去蒂,花朵随开无停滞。2、谷雨时节情谊长,深情厚谊需培养。平时问候到心房,有事帮忙需到场。诚心诚意有主张,祝福声声欢乐常。愿你谷雨体健康,你我友情万年长!3、清明...
句子查看全文>>
推荐
- 1精选的名人名言大全小学 名人名言大全小学363
- 2小型货车换机油步骤?108
- 3名人名言的英语130
- 4汉兰达后排座椅怎么放平306
- 5奋斗朋友圈说说206
- 6普通的指甲油能封层吗 透明指甲油可以当封层吗283
- 7途观水温表在0度是什么意思?436
- 8西藏省各地区车牌号的代码字母是什么?400