Java发送socket请求的工具
package com.tech.jin.util; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket; import org.apache.log4j.Logger; public class SocketUtil{
private static Logger logger = Logger.getLogger(SocketUtil.class);
/**
* 发送socket请求
* @param clientIp
* @param clientPort
* @param msg
* @return
*/
private static synchronized String 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 = new Socket(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();
}
} return rs; } /**
* 读取输入流
* @param in
* @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 = new ByteArrayOutputStream(); 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();
}
}
return b;
}
}
Java发送socket请求的工具的更多相关文章
- 通过java发送http请求
通常的http请求都是由用户点击某个连接或者按钮来发起的,但是在一些后台的Java程序中需要发送一些get或这post请求,因为不涉及前台页面,该怎么办呢? 下面为大家提供一个Java发送http请求 ...
- 向继电器发送socket请求(python+java)
近日,有一需求,向连接在内网的继电器发送socket请求,加以控制.原本并不复杂,只是io流/socket转换的问题,实操中却出现python代码没问题,java代码执行无响应的问题,问题很好定位:没 ...
- Java发送HTTPS请求
前言 上篇文章介绍了 java 发送 http 请求,大家都知道发送http是不安全的 .我也是由于对接了其他企业后总结了一套发送 https的工具.大家网上找方法很多的,但是可不是你粘过来就能用啊, ...
- 使用Java发送Http请求的内容
公司要将自己的产品封装一个WebService平台,所以最近开始学习使用Java发送Http请求的内容.这一块之前用PHP的时候写的也比较多,从用最基本的Socket和使用第三方插件都用过. 学习了J ...
- Java发送Http请求并获取状态码
通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...
- 模拟发送http请求的工具推荐
做网站开发时,经常需要发送请求来测试自己的代码是否OK,这时候模拟发送http请求的工具就起到了很大的作用.特别是需要在请求带header时就更加的有必要使用工具.下面推荐的工具有的是基于系统开发的程 ...
- Java 发送 Https 请求工具类 (兼容http)
依赖 jsoup-1.11.3.jar <dependency> <groupId>org.jsoup</groupId> <artifactId>js ...
- Java 发送 Http请求工具类
HttpClient.java package util; import java.io.BufferedReader; import java.io.IOException; import java ...
- JAVA发送HttpClient请求及接收请求结果
1.写一个HttpRequestUtils工具类,包括post请求和get请求 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...
随机推荐
- HTTP参数中Etag的重要性
在研究tornado时,有个Etag比较好奇,从网上查询摘录如下:
- css控制段落
<p></p>标签:一段话或者段落适宜于用p标签: 段落缩进:text-indent:50px: 文字方向:text-align:center居中.left往左显示.right ...
- 简单理解js的this
js的this是什么?关于这个东西,博客园里面有太多的解释了,不过,本人看了一下,感觉对this解释的有点复杂了,因此,本人在此给this一个简单易于理解的定义. this其实是js的一个对象,至于是 ...
- java中一些定时器的使用
一:简单说明 ScheduleExecutorService接口中有四个重要的方法,其中scheduleAtFixedRate和scheduleWithFixedDelay在实现定时程序时比较方便. ...
- Android Scroller简单用法
Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...
- git用.gitignore忽略指定文件
.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠“/”开头 ...
- vpn打通结果ping不通
A 是一台服务器 B 是一台openvpn A 设置路由 route add -net 172.16.1.0/24 gw 192.168.125.228 B 设置伪装 -A POSTROUTING - ...
- Elasticsearch之client源码简要分析
问题 让我们带着问题去学习,效率会更高 1 es集群只配置一个节点,client是否能够自动发现集群中的所有节点?是如何发现的? 2 es client如何做到负载均衡? 3 一个es node ...
- WebForm 内置对象
内置对象: Response对象:响应请求 Response.Write("<script>alert('添加成功!')</script>"); Respo ...
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...