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请求的工具的更多相关文章

  1. 通过java发送http请求

    通常的http请求都是由用户点击某个连接或者按钮来发起的,但是在一些后台的Java程序中需要发送一些get或这post请求,因为不涉及前台页面,该怎么办呢? 下面为大家提供一个Java发送http请求 ...

  2. 向继电器发送socket请求(python+java)

    近日,有一需求,向连接在内网的继电器发送socket请求,加以控制.原本并不复杂,只是io流/socket转换的问题,实操中却出现python代码没问题,java代码执行无响应的问题,问题很好定位:没 ...

  3. Java发送HTTPS请求

    前言 上篇文章介绍了 java 发送 http 请求,大家都知道发送http是不安全的 .我也是由于对接了其他企业后总结了一套发送 https的工具.大家网上找方法很多的,但是可不是你粘过来就能用啊, ...

  4. 使用Java发送Http请求的内容

    公司要将自己的产品封装一个WebService平台,所以最近开始学习使用Java发送Http请求的内容.这一块之前用PHP的时候写的也比较多,从用最基本的Socket和使用第三方插件都用过. 学习了J ...

  5. Java发送Http请求并获取状态码

    通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...

  6. 模拟发送http请求的工具推荐

    做网站开发时,经常需要发送请求来测试自己的代码是否OK,这时候模拟发送http请求的工具就起到了很大的作用.特别是需要在请求带header时就更加的有必要使用工具.下面推荐的工具有的是基于系统开发的程 ...

  7. Java 发送 Https 请求工具类 (兼容http)

    依赖 jsoup-1.11.3.jar <dependency> <groupId>org.jsoup</groupId> <artifactId>js ...

  8. Java 发送 Http请求工具类

    HttpClient.java package util; import java.io.BufferedReader; import java.io.IOException; import java ...

  9. 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 ...

随机推荐

  1. .NET中MemCached使用介绍

    阅读目录 1.MemCached是什么? 2.Window中MemCached安装 3.MemCached命令 4.简单示例 MemCached是什么 MemCached是一个自由开源,高性能,分布式 ...

  2. kafka总结

    近期在做kafka metrics. 参考了几个开源的项目,诸如kafka manager, Burrow, kafkaOffsetMonitor,东西都很不错,可惜没有一个是用java编写的,最终自 ...

  3. async 和 await 的进阶

    异常的捕获: static void Main(string[] args) { //继续我们的异步编程的使用嘀呀: //关于主线程是无法捕获我们子线程中的异常滴滴啊: var t = DoExcep ...

  4. ssh 配合 tar 实现远程推送

    tar命令和ssh配合使用 如何在空间不是很富裕的情况,把文件从一个分区tar到另外一个分区,其实还有很多办法的,使用管道命令就可以实现 如: #tar -cvf home |(cd /datavg3 ...

  5. 制作自己的嵌入式Linux电脑_转

    制作自己的嵌入式Linux电脑 http://os.51cto.com/art/201409/450334.htm 原文链接:http://blog.jobbole.com/75414/ 包含器件选择 ...

  6. yii框架的增删改查

    一.新增 使用model::save()操作进行新增数据 $user= new User; $user->username =$username; $user->password =$pa ...

  7. MWeb 1.5 发布!增加打字机滚动模式、发布到 Evernote、印象笔记、Wordpress.com、Blogger、编辑器内代码块语法高亮

    打字机滚动模式(Typewriter Scrolling) 快捷键:CMD + Option + T,菜单:View - Typewriter Scrolling ,效果如下图: 发布到 Everno ...

  8. 遇到 Line 21: StartTag: invalid element name ios

    打开这个的storyboard 文本编辑打开修改里面有冲突的部分

  9. getchar的利用

    /*以每行一个单词的形式打印其输入 */ getchar   putchar函数,是逐个打印和输入(逐个循环打印) #include <stdio.h> int main() { int ...

  10. Linux 挂载U盘

    命令模式下挂载,图形的一般可以自动识别. #fdisk -l      --查看linux 硬盘分区 这个/dev/sdg1 就是我的U盘了,这里挂载的fat格式的 # mount /dev/sdg1 ...