`
nbtlxx
  • 浏览: 253938 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

采用writeobject方法

阅读更多
socket直接通信,采用writeObject方法进行。

服务器端代码
public void run() {
		while (isRunning) {
			System.out.println("connect is running");
			try {
				socket = sSocket.accept();
				System.out.println("connect is ok");
				oos = new ObjectOutputStream(socket.getOutputStream());
				// oos.writeObject(new Integer(1));	
				while(true){
					int size = (list.size()> 10) ? 10 : list.size();
					for (int i = 0; i < size; i++) {
						Result result = (Result) list.remove(size);
//						System.out.println("result: " + result);
						oos.writeObject(result);
//						System.out.println("发送一个对象成功!");
					}
				}
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}


客户端:
class ReadResult extends Thread {

		private String ip = "localhost";
		private int port = 8889;
		Socket socket = null;
		private boolean isRunning = true;
		BufferedReader reader = null;

		public ReadResult() {
			try {
				socket = new Socket(ip, port);
			} catch (UnknownHostException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}

		public void run() {
			ObjectInputStream ois = null;
			try {
				System.out.println("chatclient test!");
				ois = new ObjectInputStream(socket.getInputStream());
				while(true){
					Result result = (Result) ois.readObject();					
					System.out.println("name: " + result.getName());
					System.out.println("website: " + result.getWebsite());
//					System.out.println("list size : " + resultsList.size());
				}
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}


Object对象类
public class Result implements Serializable{
	String id;
	String name;
	String content;
	String website;

	public Result(String id, String name, String content, String website) {
		// TODO Auto-generated constructor stub
		this.id = id;
		this.name = name;
		this.content = content;
		this.website = website;
	}
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getWebsite() {
		return website;
	}

	public void setWebsite(String website) {
		this.website = website;
	}
}
分享到:
评论

相关推荐

    基于Java实现学生选课模拟系统之文件输入输出【100011979】

    采用对象序列化的 writeObject 方法把选课结果存到硬盘文件系统中; 2.采用对象序列化的 readObject 方法从文件中恢复对象,并操作学生的选课课表,实现退课操作。 3.打印课程对象信息,采用覆盖定义 toString()...

    java List 深度复制方法

    总结来说,Java中实现List的深度复制,可以采用序列化和反序列化的方法,或者手动复制每个元素。选择哪种方法取决于你的具体需求,例如对象是否支持序列化,以及性能和代码复杂性的考量。在处理可变对象时,确保深...

    对象的序列化与反序列化

    - **实现`Serializable`接口并自定义序列化方法**:如果`Customer`类实现了`Serializable`接口,并定义了`writeObject`和`readObject`方法,那么序列化和反序列化操作将按照自定义的方法进行。 ```java public ...

    Wp7客户端与Webservice的数据传输,json的序列化与反序列化借鉴.pdf

    接着,创建一个 `MemoryStream` 对象,`WriteObject` 方法将对象写入内存流,然后将内存流中的数据转换为UTF-8编码的字符串,最后关闭内存流并返回JSON字符串。 2. **JSON反序列化**: - `JsonDeserialize&lt;T&gt;` ...

    学生管理系统Java.docx

    - **写入文件**:`addFile()`方法使用`ObjectOutputStream`来创建一个`FileOutputStream`对象,通过`writeObject()`方法将`ArrayList`中的`Student`对象写入名为"student.txt"的文件中。最后,写入`null`作为文件的...

    Java图书管理系统设计报告.doc

    - `writeObject`和`readObject`方法用于序列化和反序列化对象时保存和恢复对象状态。 - 使用`synchronized`关键字确保对`borrowBook()`和`returnBook()`方法的访问是线程安全的,防止并发问题。 - `borrowBook()`...

    JSON JAR包

    它提供了`writeObject()`和`writeArray()`方法,帮助我们将Java对象转换成JSON格式的字符串。 5. **JSONValue**:这是所有JSON值的基类,可以表示JSON中的任何数据类型,包括JSON对象、数组、布尔值、数字、字符串...

    java序列化

    为了更加精细地控制序列化过程,可以覆盖`writeObject()`和`readObject()`方法。这两个方法允许开发人员自定义序列化和反序列化的逻辑。 ```java private void writeObject(ObjectOutputStream out) throws ...

    java深度克隆

    2. **序列化对象**:通过调用`ObjectOutputStream`的`writeObject()`方法将传入的对象序列化,并存储到`ByteArrayOutputStream`中。 3. **创建输入流**:使用`ByteArrayOutputStream`中的字节数组创建`...

    json 学习笔记 相关知识点

    首先创建了一个`DataContractJsonSerializer`实例,然后使用`WriteObject`方法将对象写入内存流中,最后将内存流中的数据转换为UTF-8编码的字符串。 ##### 反序列化(Deserialization) 反序列化是序列化的逆过程...

    java常见面试题目汇总.doc

    13. **JAVA实现排序和序列化**:实现`Comparable`或`Comparator`接口进行比较,序列化可以采用上述的实现`Serializable`接口方法。 14. **在COLLECTION框架中,实现比较要实现的接口**:`java.util.Comparator`接口...

    java经典大型软件公司面试题(免费).pdf

    实现排序可以通过自定义`Comparator`接口,序列化可以使用`writeObject()`和`readObject()`方法。 14. `COLLECTION`框架中的比较: 要实现`Comparable`接口或使用`Comparator`接口。 15. 插入排序代码: 插入...

    如何正确的使用Java序列化技术

    - **实现 `writeObject()` 和 `readObject()` 方法**:可以通过实现这两个方法来自定义序列化和反序列化的逻辑。 #### 3.2 类加载机制 序列化过程中,涉及到的对象可能需要通过类加载器动态加载。Java的类加载机制...

    java学生信息管理系统 StudentManage.zip

    通过`ObjectOutputStream`类的`writeObject()`方法,可以将对象写入到文件中;而通过`ObjectInputStream`的`readObject()`方法,可以从文件中读取并恢复对象。这样,即使系统重启,之前保存的学生信息也能被正确地...

    JAVA序列化和反序列化的底层实现原理解析

    它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。 java.io.ObjectInputStream:表示对象输入流;它的readObject()方法源输入流中读取字节序列,再把...

    Java面试题,自己查看学习的程度

    39. Java序列化:实现`Serializable`接口,`writeObject()`和`readObject()`方法。 40. 不能从`static`方法中调用非`static`方法。 41. `clone()`方法中通常会调用`super.clone()`。 42. 异常处理的关键字:`try`...

    kryonet英文API

    `readObject()`和`writeObject()`用于读写对象,这使得你可以直接在网络连接上操作Java对象,无需关心底层的字节流。 5. **对象注册与ID** 每个被序列化的类都有一个唯一的ID,可以通过`Kryo.register()`手动指定...

    java 面试题 总结

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...

    DVD项目功能实现

    本项目采用了DAO(Data Access Object)模式,将数据访问逻辑封装在单独的类中。这样做可以带来以下好处: - **解耦**:通过将数据访问逻辑与其他业务逻辑分离,使得系统更易于维护和扩展。 - **重用**:DAO层的...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

Global site tag (gtag.js) - Google Analytics