1 SocketClient.java  代码

package com.cpcnet.socket;import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;import com.cpcnet.util.MyLogger;
import com.cpcnet.util.PropertiesUtil;
import com.cpcnet.util.StringUtil;public class SocketClient {private MyLogger logger = new MyLogger(SocketClient.class);public static String CMD=PropertiesUtil.getProp("socket.properties", "CMD");private Socket socket = null;  private BufferedReader br = null;  private PrintWriter pw = null;  public String getTheFiles(String cmd,List<String> gidList){this.logger.info("SocketClient.java getTheFiles(String cmd,List<String> gidList) cmd = " + cmd  + " gidList = " + gidList);boolean flag = true;String result = null;String ip = PropertiesUtil.getProp("socket.properties", "ip");int port = Integer.parseInt(PropertiesUtil.getProp("socket.properties", "port"));if(!this.connect(ip, port)){this.logger.error("SocketClient.java connect falied");flag = false;}else{this.logger.info("SocketClient.java connect success");this.logger.info("SocketClient.java connect Socket = " + socket);System.out.println("Socket=" + socket);try {br = new BufferedReader(new InputStreamReader(socket.getInputStream()));pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(  socket.getOutputStream())));  } catch (IOException e) {flag = false;this.logger.error("SocketClient.java br = new BufferedReader(new InputStreamReader(socket.getInputStream())); pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(  socket.getOutputStream())));   ");e.printStackTrace();}  if(!this.sendCmd(cmd, gidList)){flag = false;this.logger.error("SocketClient.java sendCmd(cmd, gidList) failed ");}if(flag){result = this.getMessage();System.out.println("SocketClient.java result = " + result);}}this.close();return result;}public String getMessage(){String result = null;String str = null;try {str = br.readLine();System.out.println("server message = "+str);  result = str;Thread.sleep(1);} catch (Exception e) {this.logger.error("SocketClient.java getMessage() error");e.printStackTrace();}  pw.flush();  return result;}public boolean sendCmd(String cmd,List<String> gidList){boolean flag = true;if(CMD.equals(cmd)&&gidList.size() > 0){String gidListString = StringUtil.ListToString(gidList);
//          String gidListString = StringUtil.gidStringConvertList(gidStr)String sendCmd = cmd + "and" + gidListString ;pw.println(sendCmd);  pw.flush();}else{this.logger.error("SocketClient.java sendCmd(String cmd,List<String> gidList) cmd = " + cmd + "  gidList = " + gidList);flag = false;}return flag;}public boolean connect(String ip ,int port){boolean flag = true;try {socket = new Socket(ip, port);} catch (IOException e) {flag = false;e.printStackTrace();}return flag;}public void close(){try {br.close();pw.close();  socket.close();  } catch (IOException e) {// TODO Auto-generated catch blockthis.logger.error("SocketClient.java close() error");e.printStackTrace();}  }public static void main(String[] args) { String cmd = PropertiesUtil.getProp("socket.properties", "CMD");
//      List<String> gidList = new ArrayList<String>();
//      gidList.add("20186");
//      gidList.add("40435");
//      gidList.add("40699");
//      new SocketClient().getTheFiles(cmd, gidList);//
//      try {
//          Thread.sleep(5000);
//      } catch (InterruptedException e) {
//          // TODO Auto-generated catch block
//          e.printStackTrace();
//      }
//      List<String> gidList2 = new ArrayList<String>();gidList2.add("19934");gidList2.add("40435");gidList2.add("40699");new SocketClient().getTheFiles(cmd, gidList2);
//      {20186=[all_sites_traffic_summary_201502.html, all_sites_traffic_summary_201503.html], 40435=[], 40699=[]}}  }

2  SocketServer.java 代码

package com.cpcnet.socket;import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.cpcnet.util.ListUtil;
import com.cpcnet.util.MyLogger;
import com.cpcnet.util.PropertiesUtil;public class SocketServer {private ServerSocket serverSocket = null;private Socket socket = null;private BufferedReader br = null;private PrintWriter pw = null;private MyLogger logger = new MyLogger(SocketServer.class);private  String CMD=PropertiesUtil.getProp("socket.properties", "CMD");private  String cmd = null;private  String gidListString = null;private String error = PropertiesUtil.getProp("socket.properties", "error");public boolean init(){boolean flag = true;int port = Integer.parseInt(PropertiesUtil.getProp("socket.properties", "port"));  //设定服务端的端口号  try {serverSocket = new ServerSocket(port);} catch (IOException e) {this.logger.error("SocketServer.java  serverSocket = new ServerSocket(PORT); port = " + port);flag = false;e.printStackTrace();}  System.out.println("ServerSocket Start:"+serverSocket);  return flag;}public boolean start(){boolean flag = true;if(!this.init()){this.logger.error("SocketServer.java init() failed ");    }else{while(true){try {socket = serverSocket.accept();System.out.println("Connection accept socket:" + socket);Thread thread = this.initThread(socket, logger);thread.start();
//                  thread.stop();} catch (IOException e) {this.logger.error("SocketServer.java start() init the br and pw error");try {socket.close();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}e.printStackTrace();return false;}  }}return flag;}public Thread initThread( final Socket socket, final MyLogger logger){Thread thread = new Thread(new Runnable(){public void run(){try {//用于接收客户端发来的请求  br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//用于发送返回信息,可以不需要装饰这么多io流使用缓冲流时发送数据要注意调用.flush()方法  pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);  } catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}//                 while(true){if(!this.getMessage()){logger.error("SocketServer.java getMessage() failed " );}if(!this.sendMessage()){logger.error("SocketServer.java sendMessage() failed");}try {Thread.sleep(1);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("close socket and  socket = " + socket);
//                      this.close();//                 }} public void close(){try {br.close();pw.close();socket.close();
//                      serverSocket.close();} catch (IOException e) {logger.error("SocketServer.java close() error");e.printStackTrace();}  }public boolean getMessage(){boolean flag  = true;String cmdAndGidListAndMonth = null;try {cmdAndGidListAndMonth = br.readLine();} catch (IOException e) {logger.error("SocketServer.java getMessage() error");e.printStackTrace();return false;}  if(cmdAndGidListAndMonth != null){System.out.println("SocketServer.java cmdAndGidListAndMonth = " + cmdAndGidListAndMonth);cmd = cmdAndGidListAndMonth.split("and")[0];gidListString = cmdAndGidListAndMonth.split("and")[1];}return flag;}public boolean sendMessage(){boolean flag = true;if (CMD.equals(cmd)) {String fileBasicPath = PropertiesUtil.getProp("socket.properties", "fileBasicPath");Map<String,List<String>> map_gid_list = new HashMap<String,List<String>>();List gidList = ListUtil.StringToList(gidListString);if(gidList!= null && gidList.size() > 0){for(int i = 0 ; i < gidList.size() ; i ++ ){String filePath = fileBasicPath  + gidList.get(i);List<String> gid_list = this.getFilesByGid(filePath);map_gid_list.put((String) gidList.get(i), gid_list);}System.out.println("map_gid_list.toString() = " + map_gid_list.toString());pw.println(map_gid_list.toString());pw.flush();  }else{flag =false;logger.error("SocketServer.java sendMessage error :  this.cmd = " + cmd + " this.gidList = " + gidList );}}return flag;}public List<String> getFilesByGid(String filePath){List<String> list = new ArrayList<String>();File sumamryGidFile = new File(filePath);if(!sumamryGidFile.exists()) sumamryGidFile.mkdir();File[] childFiles =  sumamryGidFile.listFiles();if(childFiles != null &&childFiles.length > 0){  for(int j = 0 ; j < childFiles.length ; j ++){if(!childFiles[j].isDirectory()){String childFileName = childFiles[j].getName();childFileName = childFileName.split("\\.")[0];childFileName = childFileName.split("_")[4];list.add(childFileName);}}}return list;}});return  thread;}public static void main(String[] agrs) {  boolean flag = new SocketServer().start();}
}

自己写的socket 多线程 通讯相关推荐

  1. python socket多线程 获取朋友列表_python socket多线程通讯实例分析(聊天室)

    本文实例讲述了python socket多线程通讯方法.分享给大家供大家参考,具体如下: #!/usr/bin/evn python """ 这是一个Socket+多进程 ...

  2. 远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转 服务器源代码,socket多线程并发通讯

    远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转 服务器源代码,socket多线程并发通讯, 对接多路plc串口WIFI模块实现远程调试程序.支持各种串口服务器以及tcp以太网转发器硬件.

  3. 远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码,socket多线程并发通讯,对接多路plc串口WIFI模块实现远程调试程序

    远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码,socket多线程并发通讯,对接多路plc串口WIFI模块实现远程调试程序. 支持各种串口服务器以及tcp以太网转发器硬件. ...

  4. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  5. Netty入门与实战:仿写微信IM即时通讯系统

    转载自:Netty入门与实战:仿写微信IM即时通讯系统 Netty是互联网中间件领域使用最广泛最核心的网络通信框架,几乎所有互联网中间件或者大数据领域均离不开Netty,掌握Netty是作为初中级工程 ...

  6. iOS Socket Client 通讯

    iOS Socket Client 通讯 阅读 239 收藏 19 2017-03-29 原文链接:https://github.com/guangzhouxia/JTSocket iOS Socke ...

  7. Socket网络通讯_TCP协议

    Socket网络通讯即如上图所示 图中IP代表服务器地址,那么端口是什么呢?

  8. socket多线程方式案例

    记下来,方便以后查看 User类 1 package com.xujingyang.ThreadSocket; 2 3 import java.io.Serializable; 4 5 public ...

  9. C# Socket SSL通讯笔记

    C# Socket SSL通讯笔记 一.x.509证书 1.制作证书 先进入到vs2005的命令行状态,即: 开始-->程序-->Microsoft Visual Studio 2005- ...

最新文章

  1. LunarPages空间500错误原因及解决办法
  2. dalvik对于JPDA的实现
  3. 开发整理笔记Markdown基本使用
  4. 4x root 红米_好激动,红米NOTE4X开发版成功获得完全ROOT教程,非假ROOT!!
  5. 博客“评论王”评选活动开始啦!
  6. linux pdf 编辑图层,PDF SDK DEMO
  7. 更新QQ连连看外挂 加入自动挂机多项功能
  8. 续费Enom域名的三种办法
  9. 2022年,人工智能和数据发展呈现哪五大趋势?
  10. 数值分析12 - Hermite埃尔米特插值法(要求高阶插值误差足够小)
  11. Scratch教程——完整的跳跃
  12. oracle查询sql走索引吗,Oracle SQL不走索引小记
  13. 2022-C4-AI-基于飞桨的智慧书桌系统
  14. LabVIEW编程实例:如何通过TCP协议进行数据通信
  15. ProcessDefinition是干这个用的
  16. Cadence创建异形焊盘教程(详细操作)
  17. react页面渲染之前_react 渲染顺序
  18. 廉江计算机等级考试学校最大,湛江一中、二中、北大附属实验学校和廉江实验学校成绩比较...
  19. 【Excel】引用人民银行同期贷款利率(基准利率)和LPR利率的利息计算器
  20. Keysight ADS常见报错及解决方法总结-1

热门文章

  1. 【Servlet】HTTP 协议之请求方式、Servlet介绍、Servlet 的生命周期
  2. C++ STL栈Stack的使用
  3. 怎么break java8 stream的foreach
  4. 2016电大计算机网考,2016年电大-电大计算机网考题库[].doc
  5. ThreadLocal用法详解和原理
  6. maven下载包慢解决
  7. 04.内置analyzer和analyze-API使用
  8. 理解JS的事件循环过程
  9. python多分类混淆矩阵代码_深度学习自学记录(3)——两种多分类混淆矩阵的Python实现(含代码)...
  10. exls导入数据库 php_PHP Excel导入数据到MySQL数据库