• 技术文章 >Java >java教程

    Java利用Socket实现通讯客户端的代码怎么写

    PHPzPHPz2023-04-25 08:52:06转载28

    具体客户端代码如下:

    1. import java.net.*;

    2. import java.io.*;

    3. import org.apache.log4j.Logger;

    4. public class SocketClient {

    5. static Logger log = Logger.getLogger(SocketClient.class.
      getName()); //日志记录信息

    6. private String hostName;

    7. private int portNum;

    8. private int delaySecond; // 发文接收返回报文延时

    9. public SocketClient() {

    10. this.hostName = "192.168.0.1";

    11. this.portNum = 7000;

    12. this.delaySecond = 50000;

    13. pFileOp = null;

    14. }

    15. private Socket getSocket() {

    16. Socket socket = null;

    17. try {

    18. socket = new Socket(hostName, portNum);

    19. } catch (UnknownHostException e) {

    20. System.out.println("-->未知的主机名:" + hostName + " 异常");

    21. } catch (IOException e) {

    22. System.out.println("-hostName=" + hostName + " portNum="

    23. + portNum + "---->IO异常错误" + e.getMessage());

    24. }

    25. return socket;

    26. }

    27. public String sendMessage(String strMessage) {

    28. String str = "";

    29. String serverString = "";

    30. Socket socket;

    31. try {

    32. socket = getSocket();

    33. // socket.setKeepAlive(true);

    34. if (socket == null) { // 未能得到指定的Socket对象,Socket通讯为空

    35. return "0001";

    36. }

    37. PrintWriter out = new PrintWriter(socket.getOutputStream());

    38. //log.info("---->发送报文="+strMessage);

    39. out.println(strMessage);

    40. out.flush();

    41. BufferedReader in = new BufferedReader(new InputStreamReader(

    42. socket.getInputStream()));

    43. long sendTime = System.currentTimeMillis();

    44. long receiveTime = System.currentTimeMillis();

    45. boolean received = false; // 成功接收报文

    46. boolean delayTooLong = false;

    47. serverString = null;

    48. while (!received && !delayTooLong) {

    49. if (socket.getInputStream().available() > 0) {

    50. // serverString = in.readLine();

    51. char tagChar[];

    52. tagChar = new char[1024];

    53. int len;

    54. String temp;

    55. String rev = "";

    56. if ((len = in.read(tagChar)) != -1) {

    57. temp = new String(tagChar, 0, len);

    58. rev += temp;

    59. temp = null;

    60. }

    61. serverString = rev;

    62. }

    63. receiveTime = System.currentTimeMillis();

    64. if (serverString != null)

    65. received = true; // 字符串不为空,接收成功

    66. if ((receiveTime - sendTime) > delaySecond)

    67. delayTooLong = true; // 接收等待时间过长,超时

    68. }

    69. in.close();

    70. out.close();

    71. str=serverString;

    72. if (delayTooLong) str="2190"; //超时标志为真,返回超时码

    73. if (!received) str ="2190";

    74. socket.close();

    75. } catch (UnknownHostException e) {

    76. log.error("---->出现未知主机错误! 主机信息=" + this.hostName +
      " 端口号="

    77. + this.portNum + " 出错信息=" + e.getMessage());

    78. str = "2191";

    79. // System.exit(1);

    80. } catch (IOException e) {

    81. log.error("---->出现IO异常! 主机信息=" + this.hostName +
      " 端口号="

    82. + this.portNum + " 出错信息=" + e.getMessage());

    83. e.printStackTrace();

    84. str = "2191";

    85. } catch (Exception e) {

    86. str="2177";

    87. log.error("---->出现未知异常" + e.getMessage());

    88. } finally {

    89. socket = null;

    90. str.trim();

    91. //log.info("--->返回的socket通讯字符串="+str);

    92. return str;

    93. }

    94. }

    95. }

    以上就是Java利用Socket实现通讯客户端的代码怎么写的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java socket
    上一篇:Docker搭建Java Web运行环境实例分析 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 通过迭代器访问Java的Collection的方法• 怎么在Java中终止一个线程• java怎么随机打乱数组顺序• 最常重用的Java异常类有哪些• Java二维数组拷贝的效率比较分析实例
    1/1

    PHP中文网