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"));
登录后复制

示例:

立即学习“Java免费学习笔记(深入)”;

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 

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 + "
");  //加上分行符,以便服务器按行读取
    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入门教程,欢迎在线学习! 

以上就是java socket乱码的详细内容,更多请关注慧达安全导航其它相关文章!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部