Java socket保存示例(不使用base64)解决中文乱码问题
2014-06-10 17:47
429 查看
MultiThreadServer.java
Client.java
package com.my.nubase64; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * socket服务端:多线程处理 * * @author zhang * */ public class MultiThreadServer { private int port = 8821; private ServerSocket serverSocket; private ExecutorService executorService; private final int POOL_SIZE = 10; public MultiThreadServer() throws IOException { serverSocket = new ServerSocket(port); executorService = Executors.newFixedThreadPool(Runtime.getRuntime() .availableProcessors() * POOL_SIZE); System.out.println("服务已启动"); } public void service() { while (true) { Socket socket = null; try { socket = serverSocket.accept(); executorService.execute(new Handler(socket)); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { new MultiThreadServer().service(); } } class Handler implements Runnable { public static final String CHARCODE_UTF8 = "utf-8"; private Socket socket; public Handler(Socket socket) { this.socket = socket; } private BufferedWriter getWriter(Socket socket) throws IOException { return new BufferedWriter(new OutputStreamWriter( socket.getOutputStream(), CHARCODE_UTF8)); } private BufferedReader getReader(Socket socket) throws IOException { InputStream socketIn = socket.getInputStream(); return new BufferedReader( new InputStreamReader(socketIn, CHARCODE_UTF8)); } public void run() { BufferedReader br = null; BufferedWriter out = null; try { br = getReader(socket); out = getWriter(socket); String msg = null; while ((msg = br.readLine()) != null) { System.out.println("msg:" + msg); String res = "wwwwwwwwwwww哈哈w1241243123"; res = res + "\r\n"; out.write(res); out.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (socket != null) socket.close(); } catch (IOException e) { e.printStackTrace(); } try { if (br != null) br.close(); } catch (IOException e) { e.printStackTrace(); } try { if (out != null) out.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Client.java
package com.my.nubase64; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; public class Client { public static final String CHARCODE_UTF8 = "utf-8"; public static void main(String[] args) { Socket socket = null; int port = 8821; BufferedReader br = null; BufferedWriter out = null; try { socket = new Socket("localhost", port); socket.setSoTimeout(1000 * 60 * 5); // 发送消息 String msg = "wwwwwwwwwwww哈哈w1241243123"; msg = msg + "\r\n"; out = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream(), CHARCODE_UTF8)); out.write(msg); out.flush(); // 接收服务器的反馈 br = new BufferedReader(new InputStreamReader( socket.getInputStream(), CHARCODE_UTF8)); String res = br.readLine(); if (res != null) { System.out.println("res:" + res); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (socket != null) socket.close(); } catch (IOException e) { e.printStackTrace(); } try { if (br != null) br.close(); } catch (IOException e) { e.printStackTrace(); } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
相关文章推荐
- 使用MySQL保存中文数据时,经常会遇到乱码问题的解决思路
- asp.net下载保存对话框中文乱码问题解决
- VC轻松解析XML文件--CMarkup使用方法(解决解析中文字符出现乱码问题)
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- asp.net 将文件 二进制 上传 保存 再显示,解决文件流中文乱码问题。
- sl3中的DataGrid中的数据导出到Excel中 使用csv格式 解决中文是乱码的问题
- FCKEitor V2.6.2的使用及解决全部中文乱码问题
- 使用enterprisedt上传到ftp服务器中文文件名异常、乱码问题解决
- 在win7下使用zend studio 7.1.0,解决汉化、中文乱码、js等问题
- 使用RFileLogger记录中文乱码问题解决
- 解决asp.net中使用FckEditor上传文件,中文名称乱码的问题
- 解决使用nvelocity时候template文件里面包含中文输出结果时候出现乱码的问题
- 使用POI的HWPF操作word(未解决中文乱码问题)
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 关于在MySQL 、 VC、 JSP 中使用UTF-8解决中文生僻字乱码的问题
- 解决Smarty中trancate使用UTF8时中文乱码问题
- 使用gSOAP开发实例(4) iconv解决中文乱码问题(续)
- Ubutun安装netbeans解决中文乱码问题, 使用subversion做版本控制, 使用fcitx输入法
- (2356)Delphi 2010下使用sqlitesimpledelphi连接SQLite数据库及中文乱码问题的解决