`
cbpdc21
  • 浏览: 13970 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

UDP传递序列化对象

 
阅读更多

写了一个UDP传递对象的简单例子

 

服务端:

 

package com.udp;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
	public static void main(String[] args) throws IOException {
		DatagramSocket ds = new DatagramSocket(8081);
		byte[] buf = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf, buf.length);
		while (true) {
			System.out.println("for receive....");
			ds.receive(dp);
			Student s = (Student)b2o(dp.getData());
			System.out.println(s.name);
		}

	}

	public static Object b2o(byte[] buffer) {
		Object obj = null;
		try {
			ByteArrayInputStream buffers = new ByteArrayInputStream(buffer);
			ObjectInputStream in = new ObjectInputStream(buffers);
			obj = in.readObject();
			in.close();
		} catch (Exception e) {
			System.out.println("error");
		}
		return obj;
	}
}

 

客户端:

package com.udp;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;

public class UDPClient {
	public static void main(String[] args) throws IOException {
		InetSocketAddress isa = new InetSocketAddress(InetAddress
				.getByName("192.168.1.102"), 8081);
		DatagramSocket ds = new DatagramSocket();
		Student student = new Student();
		student.name = "denghong";
		DatagramPacket dp = new DatagramPacket(o2b(student), o2b(student).length, isa);
		ds.send(dp);
	}

	public static byte[] o2b(Student s) {
		ByteArrayOutputStream buffers = new ByteArrayOutputStream();
		try {
			ObjectOutputStream out = new ObjectOutputStream(buffers);
			out.writeObject(s);
			out.close();
		} catch (Exception e) {
			System.out.println("error");
			return null;
		}
		return buffers.toByteArray();
	}

}

 

序列化对象

package com.udp;

import java.io.Serializable;

public class Student implements Serializable{
	
	private static final long serialVersionUID = -5971668520303705956L;
	public String name;
	
}
 
0
0
分享到:
评论

相关推荐

    Netty服务端与客户端依靠Java序列化传输数据

    序列化不仅可以保存对象的状态,还可以用于持久化存储或者在网络中传递对象。 2. **Netty的ByteBuf与序列化**: Netty使用`ByteBuf`作为其内存管理的核心组件,它比Java内置的`ByteBuffer`更高效。在进行Java序列...

    DotNetty系列四:自定义协议,序列化类库MessagePack,项目代码

    在自定义协议中引入MessagePack,我们需要先为我们的数据对象定义MessagePack兼容的序列化和反序列化方法。MessagePack提供了一套API,允许我们注册类型并生成对应的序列化和反序列化函数。这样,我们可以在服务器端...

    C++实现Socket传输json(UDP形式)

    6. **反序列化JSON**:客户端接收到数据后,反序列化回JSON对象。nlohmann/json库的`json::parse()`函数可以帮助完成这个任务。 7. **处理和显示数据**:反序列化完成后,客户端可以解析JSON数据,按需处理字符串,...

    UDP通信程序 C#源码

    3. **数据打包与解包**:UDP通信通常涉及数据的序列化和反序列化。可以使用`BinaryFormatter`或自定义的序列化机制将对象转换为字节流,再通过`Socket.Send`或`Receive`方法进行传输。接收端则相反,先接收字节流,...

    ApacheMINA传递对象实例[借鉴].pdf

    在Apache MINA中传递对象,主要依赖于Java的序列化机制。在这个例子中,`MyRequestObject`和`MyResponseObject`是两个简单的Java对象,它们都实现了`Serializable`接口。这使得这些对象能够被转换为字节流在网络中...

    基于UDP通信协议的网络聊天室

    4. 数据序列化与反序列化:因为UDP是无状态的,所以需要将消息对象序列化为字节流进行传输,然后在接收端进行反序列化恢复原始信息。 5. 错误处理:考虑到UDP的不可靠性,需要编写适当的错误处理代码,例如重传机制...

    UDP打洞代码.pdf

    `FormatterHelper`类提供了序列化和反序列化对象的方法,这是在网络通信中传输复杂数据结构时常用的技术。`Serialize`方法将对象转换为字节数组,方便通过网络发送;`Deserialize`方法则接收字节数组并恢复为原来的...

    c#实现Udp通信的程序源码

    在实际项目中,除了这些基础操作,还需要考虑网络环境的变化、数据的可靠传输(比如自定义序列化协议,添加确认机制)、流量控制等问题。这个源码示例应该提供了一个基本的框架,展示了如何在C#中实现UDP通信的基本...

    C/S聊天程序框架TCP和UDP都支持

    这个聊天框架可能包含了以下组件:登录注册模块、会话管理模块、消息发送与接收模块、数据序列化与反序列化模块、网络连接管理模块等。登录注册模块负责用户的账户验证;会话管理模块维护用户间的会话状态;消息模块...

    Java+UDP+数据解码+UDP数据发送+源代码

    Java+UDP+数据解码+UDP数据发送+源代码,实现实时接收数据并显示在前端界面,读取本地文件,对文件进行操作。适合初学者对Java的UDP通信还不是特别的熟悉的Java开发者,详细的...对发送数据的组帧和对象序列化到数组。

    Java+UDP+数据解码+UDP数据发送+项目源代码

    Java+UDP+数据解码+UDP数据发送+源代码,实现实时接收数据并显示在前端界面,读取本地文件,对文件进行操作。适合初学者对Java的UDP通信还不是特别的熟悉的Java开发者,详细的...对发送数据的组帧和对象序列化到数组。

    基于xChat的Delphi UDP点对点聊天..rar

    Delphi提供了诸如TJSONObject、TXMLDocument等工具进行数据序列化和反序列化,确保信息在不同系统间能够正确传递。 8. **错误处理与容错**:由于UDP的不可靠性,开发者必须编写代码来处理可能的数据丢失、重复或...

    基于Udp的五子棋对战游戏

    数据包通常包含棋盘状态、落子位置等信息,需要进行序列化和反序列化处理。 2. **棋盘逻辑模块**:处理游戏规则,如判断胜负、合法落子位置检查、禁手规则等。这部分通常用抽象数据类型和算法来实现。 3. **用户界面...

    Netty中集成Protobuf实现Java对象数据传递示例代码.rar

    在Netty中集成Protobuf,主要目的是利用Protobuf的数据序列化能力,将Java对象转换为字节流,然后通过Netty的Channel发送到网络,接收端再反序列化恢复成原来的对象。具体步骤如下: 1. 定义消息:首先创建一个....

    Java Netty基于对象数据传输Demo

    这个"Java Netty基于对象数据传输Demo"应该是演示了如何使用Netty进行对象序列化和反序列化,以便在网络中高效地传输自定义对象。 Netty的核心在于它的`ByteBuf`类,它是字节缓冲区的高效实现,优于Java NIO的`...

    mina传输对象的示例

    4. **对象反序列化**: 在接收端,数据经过反序列化过程,恢复为原始的Java对象。这同样需要`ProtocolDecoder`来解码接收到的字节流。 5. **事件处理**: Mina使用事件驱动模型,当数据到达或发送时,会触发相应的事件...

    DELPHI Socket 发送接收自定义类

    由于Socket通信是基于字节流的,我们需要将自定义类的对象转换为字节流(序列化),然后在接收端再恢复成原来的对象(反序列化)。在Delphi中,可以使用`TBinaryStream`或`TMemoryStream`来实现这一过程。例如: ``...

    java基于UDP协议的聊天程序(可运行).zip

    - UDP协议本身不保证数据的完整性和顺序,所以聊天程序可能需要自己实现序列化和反序列化机制,确保数据的正确传输。 - 数据通常以字符串形式发送,可能需要进行UTF-8等字符编码处理,以避免乱码问题。 4. **异常...

Global site tag (gtag.js) - Google Analytics