socket传输乱码,JAVA乱码
java socket乱码
解决方法:
首先在服务端使用类指定客户端的输入流为utf-8编码,以及使用类指定输出流为utf-8编码;
然后在客户端同样的设置utf-8编码即可。
in=新缓冲读取器(新输入流读取器(套接字。getinputstream(), UTF-8 );
out=新的缓冲编写器(新的输出流编写器(套接字。获取输出流(), UTF-8 );示例:
Server:
导入Java。io。*;
导入Java。网。*;
公共类SocketServerEx1 {
公共静态void main(String args[]) {
系统。出去。println(服务器);
服务器套接字服务器套接字=空
套接字客户端套接字=空
int connects=0;
尝试{
服务器套接字=新服务器套接字(82,5);//端口:82,最大链接数:5
//最多连接10次
而(连接10) {
连接;
System.out.println( -等待连接- );
客户端套接字=服务器套接字。接受();//等待连接
System.out.println(第连接次连接);
服务客户端(客户端套接字);
}
服务器套接字。close();
} catch(IOException ioe) {
系统。出去。println( Error: ioe );
}
}
公共静态无效服务客户端(套接字客户端)引发IOException {
System.out.println(已链接);
InputStreamReader inSR=null
OutputStreamWriter outSW=null
尝试{
//读取数据
inSR=新的InputStreamReader(客户端。getinputstream(), UTF-8 );
BufferedReader br=新缓冲阅读器(inSR);
outSW=新输出streamwriter(客户端。获取输出流(), UTF-8 );
缓冲写入器bw=新缓冲写入器(outSW);
string str=
while((str=br.readLine())!=null) {
str=str.trim()。
System.out.println(收到客户端消息: str);
bw.write(已收到信息: str \ r \ n );//向客户端反馈消息,加上分行符以便客户端接收
bw。flush();
}
}最后{
//System.out.println(清理连接:‘客户端’);
insr。close();
outsw。close();
客户。close();
}
System.out.println(已断开);
}
}Client:
导入Java。io。*;
导入Java。网。*;
公共类SocketClientEx1 {
公共静态void main(String[] args) {
系统。出去。println(“客户端”);
尝试{
Socket client Socket=new Socket( localhost ,82);
系统。出去。println( client 1:客户端套接字);
数据输入流dataIS=新数据输入流(客户端套接字。getinputstream());
InputStreamReader inSR=新的InputStreamReader(dataIS,“UTF-8”);
BufferedReader br=新缓冲阅读器(inSR);
数据输出流dataOS=新的数据输出流(客户端套接字。获取输出流());
output streamwriter outSW=新输出streamwriter(dataOS, UTF-8 );
缓冲写入器bw=新缓冲写入器(outSW);
//输入信息
byte bytes[]=新字节[100];
while(true) {
系统。出去。println(-);
系统输入读取(字节);
字符串str=新字符串(字节);
str=str.trim()。
if (str==exit) {
打破;
}
//发送数据
bw。write(str \ r \ n );//加上分行符,以便服务器按行读取
bw。flush();
//接收数据
while((str=br.readLine())!=null) {
str=str.trim()。
System.out.println(服务器回复: str);
打破;
}
}
insr。close();
数据是。close();
数据操作系统。close();
客户端套接字。close();
} catch(UnknownHostException uhe){
系统。出去。println(错误: uhe。getmessage());
} catch(ConnectException ce) {
系统。出去。println(错误: ce。getmessage());
} catch(IOException ioe) {
系统。出去。println(错误: ioe。getmessage());
}最后{
}
}
}我们,大量的免费爪哇入门教程,欢迎在线学习!以上就是爪哇岛套接字乱码的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。