package com.modbus.data;
|
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.net.InetSocketAddress;
|
import java.net.Socket;
|
import java.nio.ByteBuffer;
|
import java.nio.ByteOrder;
|
import java.util.Date;
|
|
public class SocketClient {
|
|
// socket发送和读取数据
|
public static boolean SocketComm(byte[] bytedata, String ip)throws InterruptedException {
|
boolean res_t = false;
|
InputStream in = null;
|
OutputStream out = null;
|
Socket socket = new Socket();
|
ByteBuffer bytebuffer_for_socket_RX = ByteBuffer.allocate(1500);
|
try {
|
socket.connect(new InetSocketAddress(ip, 502), 5000);
|
socket.setSoTimeout(3000);
|
if (socket != null) {
|
in = socket.getInputStream();
|
out = socket.getOutputStream();
|
// ----------------- clear rx buff for tcp resend packet
|
// ----------------//
|
byte[] rx_buf_t = new byte[1024];
|
// ----------------------------------------------------------------------//
|
bytebuffer_for_socket_RX.order(ByteOrder.BIG_ENDIAN);
|
bytebuffer_for_socket_RX.clear();
|
// --------------------- socket write
|
// -----------------------------------//
|
// byte[] b = makeCommBuf(cmd, bf);
|
//System.err.println("发送数据:"+ComFn.bytesToHexString(bytedata,bytedata.length));
|
Date d1 = new Date();
|
int rx_read_time_out = 0;
|
// int rx_len = 0;
|
// System.err.println("TX: " + ComFn.bytesToHexString(b,
|
// b.length));
|
out.write(bytedata);
|
out.flush();
|
res_t=true;
|
}
|
} catch (IOException e) {
|
res_t=false;
|
} finally {
|
if (in != null) {
|
try {
|
in.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
if (out != null) {
|
try {
|
out.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
if (socket != null) {
|
try {
|
socket.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
return res_t;
|
}
|
|
}
|