首页 > Java > java教程 > 正文

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

PHPz
发布: 2023-04-25 08:52:06
转载
1207人浏览过

具体客户端代码如下:

<ol class=" list-paddingleft-2" ><li><p>import java.net.*;  </p></li><li><p>import java.io.*;  </p></li><li><p>import org.apache.log4j.Logger;  </p></li><li><p>public class SocketClient {  </p></li><li><p>static Logger log = Logger.getLogger(SocketClient.class.<br/>getName()); //日志记录信息  </p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/c1c2c2ed740f" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">Java免费学习笔记(深入)</a>”;</p></li><li><p>private String hostName;  </p></li><li><p>private int portNum;  </p></li><li><p>private int delaySecond; // 发文接收返回报文延时  </p></li><li><p>public SocketClient() {  </p></li><li><p>this.hostName = "192.168.0.1";  </p></li><li><p>this.portNum = 7000;  </p></li><li><p>this.delaySecond = 50000;  </p></li><li><p>pFileOp = null;  </p></li><li><p>}  </p></li><li><p>private Socket getSocket() {  </p></li><li><p>Socket socket = null;  </p></li><li><p>try {  </p></li><li><p>socket = new Socket(hostName, portNum);  </p></li><li><p>} catch (UnknownHostException e) {  </p></li><li><p>System.out.println("-->未知的主机名:" + hostName + " 异常");  </p></li><li><p>} catch (IOException e) {  </p></li><li><p>System.out.println("-hostName=" + hostName + " portNum="  </p></li><li><p>+ portNum + "---->IO异常错误" + e.getMessage());  </p></li><li><p>}  </p></li><li><p>return socket;  </p></li><li><p>}  </p></li><li><p>public String sendMessage(String strMessage) {  </p></li><li><p>String str = "";  </p></li><li><p>String serverString = "";  </p></li><li><p>Socket socket;  </p></li><li><p>try {  </p></li><li><p>socket = getSocket();  </p></li><li><p>// socket.setKeepAlive(true);  </p></li><li><p>if (socket == null) { // 未能得到指定的Socket对象,Socket通讯为空  </p></li><li><p>return "0001";  </p></li><li><p>}  </p></li><li><p>PrintWriter out = new PrintWriter(socket.getOutputStream());  </p></li><li><p>//log.info("---->发送报文="+strMessage);  </p></li><li><p>out.println(strMessage);  </p></li><li><p>out.flush();  </p></li><li><p>BufferedReader in = new BufferedReader(new InputStreamReader(  </p></li><li><p>socket.getInputStream()));  </p></li><li><p>long sendTime = System.currentTimeMillis();  </p></li><li><p>long receiveTime = System.currentTimeMillis();  </p></li><li><p>boolean received = false; // 成功接收报文  </p></li><li><p>boolean delayTooLong = false;  </p></li><li><p>serverString = null;  </p></li><li><p>while (!received && !delayTooLong) {  </p></li><li><p>if (socket.getInputStream().available() > 0) {  </p></li><li><p>// serverString = in.readLine();  </p></li><li><p>char tagChar[];  </p></li><li><p>tagChar = new char[1024];  </p></li><li><p>int len;  </p></li><li><p>String temp;  </p></li><li><p>String rev = "";  </p></li><li><p>if ((len = in.read(tagChar)) != -1) {  </p></li><li><p>temp = new String(tagChar, 0, len);  </p></li><li><p>rev += temp;  </p></li><li><p>temp = null;  </p></li><li><p>}  </p></li><li><p>serverString = rev;  </p></li><li><p>}  </p></li><li><p>receiveTime = System.currentTimeMillis();  </p></li><li><p>if (serverString != null)  </p></li><li><p>received = true; // 字符串不为空,接收成功  </p></li><li><p>if ((receiveTime - sendTime) > delaySecond)  </p></li><li><p>delayTooLong = true; // 接收等待时间过长,超时  </p></li><li><p>}  </p></li><li><p>in.close();  </p></li><li><p>out.close();  </p></li><li><p>str=serverString;  </p></li><li><p>if (delayTooLong) str="2190"; //超时标志为真,返回超时码  </p></li><li><p>if (!received) str ="2190";  </p></li><li><p>socket.close();  </p></li><li><p>} catch (UnknownHostException e) {  </p></li><li><p>log.error("---->出现未知主机错误! 主机信息=" + this.hostName + <br/>" 端口号="  </p></li><li><p>+ this.portNum + " 出错信息=" + e.getMessage());  </p></li><li><p>str = "2191";  </p></li><li><p>// System.exit(1);  </p></li><li><p>} catch (IOException e) {  </p></li><li><p>log.error("---->出现IO异常! 主机信息=" + this.hostName + <br/>" 端口号="  </p></li><li><p>+ this.portNum + " 出错信息=" + e.getMessage());  </p></li><li><p>e.printStackTrace();  </p></li><li><p>str = "2191";  </p></li><li><p>} catch (Exception e) {  </p></li><li><p>str="2177";  </p></li><li><p>log.error("---->出现未知异常" + e.getMessage());  </p></li><li><p>} finally {  </p></li><li><p>socket = null;  </p></li><li><p>str.trim();  </p></li><li><p>//log.info("--->返回的socket通讯字符串="+str);  </p></li><li><p>return str;  </p></li><li><p>}  </p></li><li><p>}  </p></li><li><p>} </p></li></ol>
登录后复制

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

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号