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 {

}

}

}

以上就是小编今天的分享了,希望可以帮助到大家。

标签:java socket 中文乱码

免责声明:本内容来自橡树街平台创作者或收集于互联网公开资源,不代表橡树街网的观点和立场。如有侵权内容,请联系我们删除。联系邮箱:ihuangque@qq.com
相关推荐
Java干什么的
2022-08-05
Java干什么的
java新手看什么书
2022-08-05
java新手看什么书
Java工程师工资一般是多少
2022-08-05
Java工程师工资一般是多少
java编程什么意思
2022-08-05
java编程什么意思
java开发需要什么基础
2022-08-05
java开发需要什么基础
java进阶学什么
2022-08-05
java进阶学什么
Java认证工作类型是什么
2022-08-05
Java认证工作类型是什么
java函数
2022-08-05
java函数
java和前端有什么区别
2022-08-05
java和前端有什么区别
java是干什么的
2022-08-05
java是干什么的
手机老是弹出广告怎么解决
2022-08-05
手机老是弹出广告怎么解决
小爱同学怎么判断我喜欢的人喜不喜欢我
2022-08-05
小爱同学怎么判断我喜欢的人喜不喜欢我
安卓手机如何打开.kmz文件
2022-08-05
安卓手机如何打开.kmz文件
苹果手机文件管理在哪里
2022-08-05
苹果手机文件管理在哪里
安卓手机如何打开.sav文件
2022-08-05
安卓手机如何打开.sav文件
青梅竹马是情侣吗
2022-07-28
青梅竹马是情侣吗
不锈钢密度201密度是多少
2022-07-28
不锈钢密度201密度是多少
中国有几种鹤类
2022-07-28
中国有几种鹤类
秋葵可以直接冷冻保存吗
2022-07-28
秋葵可以直接冷冻保存吗
很硬的青木瓜怎么催熟
2022-07-28
很硬的青木瓜怎么催熟
2002年出生的什么时候18周岁
2022-07-28
2002年出生的什么时候18周岁
乒乓球刀拍正确的反手扣法
2022-07-28
乒乓球刀拍正确的反手扣法
以城区西北福山得名的城市是
2022-07-28
以城区西北福山得名的城市是
鞍山在哪个省
2022-07-28
鞍山在哪个省
冷面和凉面有什么区别啊
2022-07-28
冷面和凉面有什么区别啊