java发送socket请求_Java发送socket请求的工具

该博客介绍了一个Java工具类,用于实现TCP Socket通信。通过指定目标IP和端口,发送消息并读取响应。类中包含了发送报文、读取输入流的方法,并进行了异常处理和资源关闭。
摘要由CSDN通过智能技术生成

packagecom.tech.jin.util;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importorg.apache.log4j.Logger;public classSocketUtil{private static Logger logger = Logger.getLogger(SocketUtil.class);/*** 发送socket请求

*@paramclientIp

*@paramclientPort

*@parammsg

*@return

*/

private static synchronizedString tcpPost(String clientIp,String clientPort,String msg){

String rs= "";if(clientIp==null||"".equals(clientIp)||clientPort==null||"".equals(clientPort)){

logger.error("Ip或端口不存在...");return null;

}int clientPortInt =Integer.parseInt(clientPort);

logger.info("clientIp:"+clientIp+" clientPort:"+clientPort);

Socket s= null;

OutputStream out= null;

InputStream in= null;try{

s= newSocket(clientIp, clientPortInt);

s.setSendBufferSize(4096);

s.setTcpNoDelay(true);

s.setSoTimeout(60*1000);

s.setKeepAlive(true);

out=s.getOutputStream();

in=s.getInputStream();//准备报文msg

logger.info("准备发送报文:"+msg);

out.write(msg.getBytes("GBK"));

out.flush();byte[] rsByte =readStream(in);if(rsByte!=null){

rs= new String(rsByte, "GBK");

}

}catch(Exception e) {

logger.error("tcpPost发送请求异常:"+e.getMessage());

}finally{

logger.info("tcpPost(rs):"+rs);try{if(out!=null){

out.close();

out= null;

}if(in!=null){

in.close();

in= null;

}if(s!=null){

s.close();

s= null;

}

}catch(IOException e) {

e.printStackTrace();

}

}returnrs;

}/*** 读取输入流

*@paramin

*@return

*/

private static byte[] readStream(InputStream in){if(in==null){return null;

}byte[] b = null;

ByteArrayOutputStream outSteam= null;try{byte[] buffer = new byte[1024];

outSteam= newByteArrayOutputStream();int len = -1;while ((len = in.read(buffer)) != -1) {

outSteam.write(buffer,0, len);

}

b=outSteam.toByteArray();

}catch(IOException e) {

logger.error("读取流信息异常"+e);

e.printStackTrace();

}finally{try{if(outSteam!=null){

outSteam.close();

outSteam= null;

}if(in!=null){

in.close();

in= null;

}

}catch(IOException e) {

e.printStackTrace();

}

}returnb;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值