Client:
Socket ss = null;
InputStream in = null;
DataOutputStream dos = null;
public MySocketClient() {
}
public static byte[] intToBytes(int v) {
byte[] b = new byte[4];
b[0] = (byte) ((v >>> 24));
b[1] = (byte) ((v >>> 16));
b[2] = (byte) ((v >>>
);
b[3] = (byte) ((v >>> 0));
for(int i=0;i<b.length;i++)
System.out.println(b[i]);
System.out.println(Integer.toBinaryString(v));
return b;
}
public static int bytesToInt(byte[] b) {
int ret = 0;
ret |= (b[0] & 0xff) << 24;
ret |= (b[1] & 0xff) << 16;
ret |= (b[2] & 0xff) << 8;
ret |= (b[3] & 0xff) << 0;
return ret;
}
public boolean keeplive() {
try {
if (ss == null || !(ss.isConnected() && !ss.isClosed())) {
ss = new Socket("127.0.0.1", 9901);
ss.setKeepAlive(true);
in = ss.getInputStream();
dos = new DataOutputStream(ss.getOutputStream());
}
return true;
} catch (IOException e) {
if (ss != null) {
try {
ss.close();
ss = null;
dos = null;
in = null;
} catch (IOException e1) {
}
}
try {
Thread.sleep(1000 * 5);
} catch (InterruptedException e1) {
}
return false;
}
}
public void run() {
while (!keeplive())
;
while (true) {
try {
byte[] b = "hello".getBytes();
int l = b.length;
dos.write(intToBytes(l));
dos.write(b);
dos.flush();
int leng = 0;
byte[] buffer = new byte[1024];
leng = in.read(buffer);
if (leng > 0)
System.out.println(new String(buffer));
Thread.sleep(1000);
} catch (Exception e) {
if (ss != null) {
try {
ss.close();
ss = null;
dos = null;
in = null;
} catch (IOException e1) {
e1.printStackTrace();
}
}
while (!keeplive())
;
}
}
}
Server:
public void run() {
try {
while (true) {
byte[] totalData = new byte[0];
int totalLeg = 0;
int leng = 0;
byte[] size = new byte[4];
int readsize = 0;
if (in.read(size) > 0)
readsize = bytesToInt(size);
else
continue;
byte[] buffer = new byte[readsize];
leng = in.read(buffer, 0, readsize);
System.out.println(new String(buffer).trim());
int le=(int)(Math.random()*100)+1;
byte[] b=new byte[le];
new Random().nextBytes(b);
os.write(b);
os.flush();
}
} catch (IOException e) {
// e.printStackTrace();
}
finally {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException{
ServerSocket ss=null;
try {
ss=new ServerSocket(9901);
} catch (IOException e) {
e.printStackTrace();
}
while(true){
Socket socket=ss.accept();
socket.setKeepAlive(true);
new MyRunableSocket(socket).start();
}
}
分享到:
相关推荐
Socket长连接+心跳包+发送+读取,用到的全在这里了,自己看看哪里不需要的就不要添加了!代码很清晰很明白了!
socket 长连接 简单例子,适合初学的朋友,里面有多线程 实现的,包括心跳包,数据分为两部分传送,首先双方约定用一个4字节的数组告诉对方要传送数据的长度,然后在写入数据,这样长连接的时候,双方可以知道对方...
java socket处理硬件传过来的16进制数据的工具类,包含大小端转换、byte[]数组转换为16进制的字符串、byte[]转ByteBuffer、16进制字符串转换为byte数组等
java写的socket客户端,能实现接收服务器端数据,发送数据到服务器端,断线自动重连
网络调试助手(NetAssist)java socket 通讯代码 可聊天。 网络调试助手(NetAssist)java socket通讯代码,java代码,有看不懂的可以参考博客https://blog.csdn.net/qq_39400208/article/details/81096436 java ...
socket协议数据传输,客户端发起请求每个五秒检测...同时客户端读、写线程接收和发送数据;如果对方服务器挂掉,客户端数据收取超时会自动断开连接,当服务端重新上线,客户端会重启连接,继续发送请求,接收数据;
qt与javasocket通讯,消息格式类似json。qt部分充当服务端。
通过j2se upd网络编程,发送报文。我这里只是客户端,修改数据库连接,主要是把数据库里面的图片(base64编码处理),拆成包,发送给服务端。
Socket是两台主机之间的一个连接。它可以完成7个基本操作: 连接远程机器,发送数据,接收数据,关闭连接,绑定端口,监听入站数据,在绑定端口上接受来自远程机器的连接。
它可以完成7个基本操作: 连接远程机器,发送数据,接收数据,关闭连接,绑定端口,监听入站数据,在绑定端口上接受来自远程机器的连接。当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时...
协议相当于相互通信的程序间达成的一种约定,它规定了分组报文...另外,每个Socket实例会关联一个InputStream和OutputStream对象,我们通过将字节写入套接字的OutputStream来发送数据,并通过从InputStream来接收数据。
基于java的modbus TCP通信
系统分为服务器程序和客户程序两部分,服务器与客户间采用“传输控制协议”(TCP),通过套接字(Socket)连接,客户之间采用“用户数据报协议”(UDP),通过数据报套接字(DatagramSocket)建立连接。系统具有用户...
1)设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C发给S)。 2)服务端程序能响应单个或任意多个客户端...
【资源说明】 基于java实现Socket套接字一对一聊天系统源码+项目说明.zip 该项目是个人毕设项目源码,评审分达到95分,... // 给服务器发送相关消息,由服务器断开与指定客户端的连接 【备注】更多详情介绍见项目说明!
本文介绍一种用Java的Socket和ServerSocket实现服务器和客户机通讯的的...服务器和客户端的输入输出流建立后使用writeLine()和println()方法彼此发送和接收数据。为提高代码效率,建立两个类clientAgent和serverAgent。
主要功能: 本实例基于OMRON Fins TCP协议,采用JAVA语言编写上位机软件实现Socket与OMRON CP系列PLC通讯,实例中通过发送指令实现与PLC的通讯握手,PLC寄存器数据的读取、PLC寄存器数据的写入等功能。 适合人群:...
输出缓冲区- 在传输仍在连接时发送数据。 没问题,socket.io-java-client 处理。 有意义的异常- 如果出现问题,SocketIO 会尝试抛出有意义的异常并提供修复提示。 状态:与 Websocket 连接已准备就绪。 XHR 处于...
UDP是面向非连接的,UDP传输的是数据报只负责传输信息,不保证信息一定收到,虽然安全性不如TCP(面向连接、用Socket进行通信),但是性能较好。 从简单到复杂,首先简单介绍一下怎么利用UDP实现客服端发送消息给...
java springboot tcp通讯 demo ;