当前位置: 技术问答>java相关
如何在CS通讯下传递对象,高分求解
来源: 互联网 发布时间:2015-05-08
本文导语: 我要在client-server通讯方式下,传递一个对象,不知道怎么写代码…… 例如如果只是文本传递的话只要如下写: BufferedReader in = new BufferedReader (new InputStreamReader(socket.getInputStream())); ...
我要在client-server通讯方式下,传递一个对象,不知道怎么写代码……
例如如果只是文本传递的话只要如下写:
BufferedReader in = new BufferedReader
(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter
(socket.getOutputStream(), true /* autoFlush */);
摘自java核心技术第二卷,ThreadedEchoServer.java
那么如果我要传递和读取的是一个对象实例的话应该怎么改呢?
请大家帮忙,谢谢……
例如如果只是文本传递的话只要如下写:
BufferedReader in = new BufferedReader
(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter
(socket.getOutputStream(), true /* autoFlush */);
摘自java核心技术第二卷,ThreadedEchoServer.java
那么如果我要传递和读取的是一个对象实例的话应该怎么改呢?
请大家帮忙,谢谢……
|
你传的是什么对象。我测试传一个Vector,可以。
客户端:
import java.io.*;
import java.net.*;
import java.util.Vector;
public class TestSocketClient
{
Socket mSocket = null;
DataInputStream dis = null;
DataOutputStream dos = null;
Vector mVector = new Vector(5,1);
public TestSocketClient(String [] args)
{
mVector.addElement("aa");
mVector.addElement("bb");
try
{
mSocket = new Socket("192.188.0.5",9009);
dos = new DataOutputStream(mSocket.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(dos);
oos.writeObject(mVector);
}
catch(Exception eSocket)
{
}
}
public static void main(String [] args)
{
new TestSocketClient(args);
}
}
客户端:
import java.io.*;
import java.net.*;
import java.util.Vector;
public class TestSocketClient
{
Socket mSocket = null;
DataInputStream dis = null;
DataOutputStream dos = null;
Vector mVector = new Vector(5,1);
public TestSocketClient(String [] args)
{
mVector.addElement("aa");
mVector.addElement("bb");
try
{
mSocket = new Socket("192.188.0.5",9009);
dos = new DataOutputStream(mSocket.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(dos);
oos.writeObject(mVector);
}
catch(Exception eSocket)
{
}
}
public static void main(String [] args)
{
new TestSocketClient(args);
}
}
|
http://www-900.ibm.com/developerWorks/index.shtml
上面有讲述怎样利用TCP/IP来传递对象。
GOOD LUCK!
上面有讲述怎样利用TCP/IP来传递对象。
GOOD LUCK!
|
YourObject yourObj = ...;
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(yourObj);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
YourOubject obj = (YourObject)ois.readObject();
ois.close();
YourObject必须implements java.io.Serializable 或 java.io.Externalizable
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(yourObj);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
YourOubject obj = (YourObject)ois.readObject();
ois.close();
YourObject必须implements java.io.Serializable 或 java.io.Externalizable
|
理论上只要implements Serializable就可以用socket的。
不知道你说的不可以是什么不可以?
传不过去?还是别的。你的server端代码是否已经执行监听?端口设置正确否?
kkhui(jacky)没有问题的。关于使用socket在cs模式下传递对象实例我自己写程序试过,传递一个文件到server端,绝对没有问题,检查你的程序吧。
不知道你说的不可以是什么不可以?
传不过去?还是别的。你的server端代码是否已经执行监听?端口设置正确否?
kkhui(jacky)没有问题的。关于使用socket在cs模式下传递对象实例我自己写程序试过,传递一个文件到server端,绝对没有问题,检查你的程序吧。