博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java TCP/IP网络通信基本案列
阅读量:6094 次
发布时间:2019-06-20

本文共 3065 字,大约阅读时间需要 10 分钟。

hot3.png

工作需要向TCP服务器发送命令,就研究了一下,结合网上的资料,成果代码片段如下:

  •     客户端发送信息方法
  • /**	 * TCP:发送消息	 * @throws Exception	 */	public void clientTest() throws Exception {		Socket sk = null;		OutputStream os = null;				try {			String send = getPara("send");			sk = TestTcpClient.getSocket();			if (sk != null) {				try {					sk.sendUrgentData(0XFF);				} catch (Exception e) {		        	if (times < 5) {		        		times = times + 1;		        		System.out.println("第" + times + "次重连...");		        		TestTcpClient.reConnection();		            	clientTest();					}else {						times = 0;						renderJson("重连失败!");						return;					}				}			}			if (StrKit.notBlank(send)) {				//给服务端发送响应信息 	            os = sk.getOutputStream(); 	            os.write(send.getBytes());			}			getTcpInfo();		//等待响应        } catch (ConnectException e) {        	e.printStackTrace();        } catch (SocketException e) {        	e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } catch (Exception e) {        	throw e;        }	}

客户端接收信息方法

  • /**	 * 接收TCP消息	 */	public void getTcpInfo() {		InputStream is = TestTcpClient.getInputStream();		byte b[] = new byte[1024];		try {			TestTcpClient.getSocket().setSoTimeout(10000);			is.read(b);		} catch (SocketTimeoutException e) {        	if (times < 5) {        		times += 1;        		System.out.println("第" + times + "次重连...");        		TestTcpClient.reConnection();        		getTcpInfo();			}else {				times = 0;				renderJson("重连失败!");				return;			}		} catch (IOException e) {			e.printStackTrace();		}         System.out.println(new String(b));	}
  • 获取链接TCP/IP服务器的实例
  • package com.coobar.desktop.config;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;  import java.net.UnknownHostException;//后启动客户端程序  public class TestTcpClient { 		private static Socket sk = null;	static {		//建立Socket实例		try {			 //对服务端发起连接请求 			sk = new Socket("127.0.0.1", 60); 		} catch (UnknownHostException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		} catch (Exception e) {			throw e;		}		System.out.println("初始化链接........");	}    	/**	 * 获取socket实例	 * @return	 */	public static Socket getSocket() {		return sk;	}		/**	 * 关闭socket实例	 */	public static void close() {		try {			sk.close();		} catch (IOException e) {			e.printStackTrace();		}	}		/**	 * 获取socket实例的输入流(接收信息)	 * @return	 */	public static InputStream getInputStream() {		InputStream stream = null;		try {			stream = sk.getInputStream();		} catch (IOException e) {			e.printStackTrace();		}		return stream;	}		/**	 * 获取socket的输出流(发送信息)	 * @return	 */	public static OutputStream getOutputStream() {		OutputStream stream = null;		try {			stream = sk.getOutputStream();		} catch (IOException e) {			e.printStackTrace();		}		return stream;	}		/**	 * 重新连接socket	 */	public static void reConnection() {		try {			sk = new Socket("127.0.0.1", 60);		} catch (UnknownHostException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		} 	}}
  •  

 

转载于:https://my.oschina.net/trueloveforever/blog/749354

你可能感兴趣的文章
vb sendmessage 详解1
查看>>
jquery用法大全
查看>>
Groonga 3.0.8 发布,全文搜索引擎
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>