• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java socket乱码

java 搞代码 4年前 (2022-01-09) 25次浏览 已收录 0个评论

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"));

示例:

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 < 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(<mark>来源gaodaimacom搞#^代%!码网</mark>"已收到信息:" + str + " \r\n");	//向客户端反馈消息,加上分行符以便客户端接收				bw.flush();			} 		} finally {			//System.out.println("Cleaning up connection: " + client);			inSR.close();			outSW.close();			client.close();		}		System.out.println("已断开");	}}

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 + "\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入门教程,欢迎在线学习!

以上就是java socket乱码的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java socket乱码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址