`
flowercat
  • 浏览: 358605 次
社区版块
存档分类
最新评论

java socket 长连接发送数据

    博客分类:
  • java
阅读更多
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长连接+心跳包+发送+读取,用到的全在这里了,自己看看哪里不需要的就不要添加了!代码很清晰很明白了!

    socket 长连接 多线程 心跳包 包头包体

    socket 长连接 简单例子,适合初学的朋友,里面有多线程 实现的,包括心跳包,数据分为两部分传送,首先双方约定用一个4字节的数组告诉对方要传送数据的长度,然后在写入数据,这样长连接的时候,双方可以知道对方...

    java socket处理硬件传过来的16进制数据的工具类

    java socket处理硬件传过来的16进制数据的工具类,包含大小端转换、byte[]数组转换为16进制的字符串、byte[]转ByteBuffer、16进制字符串转换为byte数组等

    Java socket编程实现两台主机间的通信

    3. 创建一个数据输出流:在客户端,使用 DataOutputStream 类来发送数据到服务器。在服务器端,使用 DataOutputStream 类来发送数据给客户端。 4. 关闭 Socket 连接:在客户端和服务器端,使用 close() 方法来关闭 ...

    java写的socket通信客户端

    java写的socket客户端,能实现接收服务器端数据,发送数据到服务器端,断线自动重连

    网络调试助手(NetAssist)java socket 通讯代码 可聊天

    网络调试助手(NetAssist)java socket 通讯代码 可聊天。 网络调试助手(NetAssist)java socket通讯代码,java代码,有看不懂的可以参考博客https://blog.csdn.net/qq_39400208/article/details/81096436 java ...

    基于TCP的Java Socket网络连接过程要点分析.pdf

    基于TCP的Java Socket网络连接过程要点分析 本文探讨了Java Socket程序中基于TCP的网络连接过程的要点,包括connect()方法、bind()方法和accept()方法在通信过程中的具体作用,以及Java网络程序与TCP三次握手之间的...

    socket数据传输(自动任务检测服务端状态)

    socket协议数据传输,客户端发起请求每个五秒检测...同时客户端读、写线程接收和发送数据;如果对方服务器挂掉,客户端数据收取超时会自动断开连接,当服务端重新上线,客户端会重启连接,继续发送请求,接收数据;

    Java Socket编程实现的简单多线程WEB服务器

    Java Socket 编程实现的简单多线程 WEB 服务器 在本文中,我们将详细介绍如何使用 Java 的 Socket 编程实现一个简单的多线程 WEB 服务器。 Socket 编程简介 Socket 编程是 Java 网络编程的基础,它允许开发者创建...

    qt与java之间socket通讯

    qt与javasocket通讯,消息格式类似json。qt部分充当服务端。

    基于Java Socket实现TCP连接【100011816】

    Socket是两台主机之间的一个连接。它可以完成7个基本操作: 连接远程机器,发送数据,接收数据,关闭连接,绑定端口,监听入站数据,在绑定端口上接受来自远程机器的连接。

    java网络编程,UDP,发送16进制报文。

    通过j2se upd网络编程,发送报文。我这里只是客户端,修改数据库连接,主要是把数据库里面的图片(base64编码处理),拆成包,发送给服务端。

    基于Java的Socket实现TCP连接.zip

    它可以完成7个基本操作: 连接远程机器,发送数据,接收数据,关闭连接,绑定端口,监听入站数据,在绑定端口上接受来自远程机器的连接。当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时...

    Java TCPIP Socket编程 源码

    协议相当于相互通信的程序间达成的一种约定,它规定了分组报文...另外,每个Socket实例会关联一个InputStream和OutputStream对象,我们通过将字节写入套接字的OutputStream来发送数据,并通过从InputStream来接收数据。

    Java_Socket_编程.ppt

    2. 客户端创建一个 Socket 对象,向服务器端发送连接请求。 3. 服务器监听到客户端的连接请求,创建一个 Socket,与客户端进行通信。 4. 建立接收和发送两个缓存区,并打开 Socket 及其输入、输出流。 5. 根据协议...

    基于java的modbus TCP通信

    基于java的modbus TCP通信

    用Java实现非阻塞通信

    ● Selector:为ServerSocketChannel监控接收连接就绪事件,为SocketChannel监控连接就绪、读就绪和写就绪事件。 ● SelectionKey:代表ServerSocketChannel以及SocketChannel向Selector注册事件的句柄。当一个...

    wssf.rar_Java 编写 用户登录 系统_java c/s _socket java_socket好友_好友socket

    系统分为服务器程序和客户程序两部分,服务器与客户间采用“传输控制协议”(TCP),通过套接字(Socket)连接,客户之间采用“用户数据报协议”(UDP),通过数据报套接字(DatagramSocket)建立连接。系统具有用户...

    java socket通信 一对多

    1)设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C发给S)。 2)服务端程序能响应单个或任意多个客户端...

    java.net.SocketException Connection reset 解决方法

    解决这个问题的方法包括设置 Socket 的 timeout 时间、确保连接关闭后不再发送数据和使用连接池或其他机制来管理连接。同时,我们也可以通过实践经验来了解到,timer 的方法可能会导致大量的 Socket 连接建立和关闭...

Global site tag (gtag.js) - Google Analytics