《java与C#之间的socket通信》.docVIP

  • 0
  • 0
  • 约2.88万字
  • 约 16页
  • 2019-11-17 发布于天津
  • 举报
java和C#之间SOCKET通信的问题 一、服务器端(使用java编写) /** * 监听客户端的请求 * */ private static void socketService() { ExecutorService exec = Executors.newCachedThreadPool(); try { ?? ServerSocket server=new ServerSocket(5678); ?? int i = 1; ?? while(true) ?? { ??? MyLogManager.InfoLog(log, null,等待连接第+i+个用户...); ??? try ??? { ???? Socket client=server.accept(); ???? MyLogManager.InfoLog(log, null,第+i+个用户连接完成!); ???? exec.execute(new PDAServerWithDB(client)); ??? } ??? catch(Exception whileExp) ??? { ???? String msg = 多线程处理连接失败!; ???? MyLogManager.ErrorLog(log, whileExp, msg); ??? } ??? i++; ?? } } catch(IOException ioe) { ?? String msg = 连接失败!; ?? MyLogManager.ErrorLog(log, ioe, msg); ?? exec.shutdown(); } } 具体对于Socket信息的接受和发送在PDAServerWithDB类中处理 信息处理分为:接收数据和发送数据 服务端接收数据一律采用ReadLine()方法,这就要求客户端在发送请求时要有行结束符。 服务器的接收发送数据的代码 a)。构造输入输出流 InputStream inPut = s.getInputStream(); OutputStream outPut = s.getOutputStream(); PrintWriter outWriter=new PrintWriter(outPut); BufferedReader inputReader =new BufferedReader(new InputStreamReader(inPut)); b。接收客户端请求的代码 String request = inputReader.readLine(); request = request.trim(); request = request.replaceAll(\n, ); c。向客户端发送文本数据的代码 outWriter.println(strInfo); outWriter.flush(); d)。向客户端发送文件的代码 // 发送文件长度 File file = new File(filePath); byte[] outBytes = new byte[1024]; int count = 0; FileInputStream fileInput = new FileInputStream(file);?? ByteArrayOutputStream ow = new ByteArrayOutputStream();?? while ((count = fileInput.read(outBytes)) 0) { MyLogManager.DebugLog(log, null, String.valueOf(count)); ow.write(outBytes, 0, count); }??? outPut.write(ow.toByteArray()); //outWriter.print(ow);//这个在JAVA客户端时可以正常响应,而在C#客户端中无法响应。 //outWriter.flush(); 二、客户端(使用java和c#两个版本) 1).发送请求信息(字符串格式) 对于JAVA来说:直接使用PrintWrite类的println()方法即可。 而对于C#来说:需要使用socket.Send(System.Text.Encoding.ASCII.GetBytes(msg + \r));需要在请求信息msg后面加上一个行结束标志符。 2).接收数据(文本或者文件) 2-1).java客户端接收数据 a)。java接收文本的代码示例: ******代码示例***** (开始连接服务器); InetAddress address = InetAddress.getByName(AppConfig.IP);//43); Socke

文档评论(0)

1亿VIP精品文档

相关文档