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 {
}
}
}
-
帝豪gs后座放平步骤是什么
在后排座椅的顶部有卡扣式固定开关,靠背与坐垫处有转轴连接,按动开关可以将靠背轻松向下翻折,放平后座。帝豪gs是吉利旗下的一款SUV车型汽车,采用了吉利汽车的家族式设计。汽车还融...
问答查看全文>> -
大众变速箱漏油有什么危害?
大众变速箱漏油危害有:1、变速箱油和发动机油类似,主要起润滑,清洁,降温,防锈,密封。变速箱在运作时,会有高温和高压,如果变速箱油漏了,变速箱漏油会导致润滑不足,加快齿轮间的摩...
问答查看全文>> -
哪一个国家酒驾是可以枪毙的?
萨尔瓦多国家酒驾是可以枪毙的。在保加利亚酒驾两次就会被枪毙,保加利亚或许还比较仁慈,萨尔瓦多就严酷的多了,只要你胆敢酒驾,就得枪毙你。萨尔瓦多用法律告诉人们,车和酒是不能共存的...
问答查看全文>> -
iphonex 88%需要更换电池吗
iphonex 88%换电池吗?很多人反映,iphonex 的电池续航能力不太理想,很多小伙伴想更换电池,那么,iphonex 88%换电池吗?本期文章就来为大家解答,想知道的...
科技查看全文>>
推荐
- 1优劲 2019款 1.3L 双排加长版 标准型 ACTECO-SQR472WD怎么样,好不好310
- 2调皮可爱的空间语录 给朋友的幽默逗比留言153
- 3宝马x3刹车片多久更换一次?269
- 4给自己喜欢的人七夕祝福语358
- 5对冬天的赞美句子346
- 6手动挡汽车上坡没劲原因是什么139
- 715年的车是国几标准334
- 8威驰和致享怎么选?496