在java网络编程中,传递数据时,如何把二维数组从客户端传递到服务器端?请教大家,谢了 如果传2维数组,可以用ObjectOutputStream比较好的办法是把游戏信息封装成一个可序列化的类,再writeObject(Object obj); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上说的方法我都实现了,你有问题就和我讨论吧!不过好象用UDP更好一点呀! 楼上两位高手,请问有没有关于ObjectOutputStream使用的实例,最好是用Socket传输的,能不能给我发一份,急要!!!谢谢[email protected] 也可以不传数组啊,将数组的内容封装成字符串,用udp传输过去,速度很快。 jbuilder的samples\chess就是用socket来传送对象的,可以看看,主要是你要游戏信息要封装为一个serializable类。 相比字符串,对象传输更方便。你还可以试试rmi,根本就不用socket了。 感谢各位关注我的程序是用socket传送二维数组,有那位大虾发给我实例,最好有代码小弟感激不尽可以发到我邮箱里,[email protected]当然了,贴出来也行。再次感谢。 client:import java.io.*;import java.net.*;import java.util.Vector;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2001</p> * <p>Company: </p> * @author unascribed * @version 1.0 */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); byte[] sendByte = new byte[3]; sendByte[0] = (byte)0; sendByte[1] = (byte)1; sendByte[2] = (byte)2; dos = new DataOutputStream(mSocket.getOutputStream()); ObjectOutputStream oos = new ObjectOutputStream(dos); oos.writeObject(sendByte); } catch(Exception eSocket) { } } public static void main(String [] args) { new TestSocketClient(args); }} server:import java.io.*;import java.net.*;import java.util.Vector;/** * * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class TestSocketServer{ ServerSocket mServerSocket = null; Socket mSocket = null; public Vector mAllClientVector = new Vector(5,2);//存放所有客户端信息 public TestSocketServer() { try { mServerSocket = new ServerSocket(9009,15); mSocket = mServerSocket.accept(); ReceiveClientThread rCT = new ReceiveClientThread(this,mSocket); rCT.start(); } catch(Exception eSocket) { } } public static void main(String [] args) { new TestSocketServer(); }}class ReceiveClientThread extends Thread{ private TestSocketServer mTestSocketServer = null; private Socket mSocket = null; private boolean mRunning = true; DataInputStream dis = null; DataOutputStream dos = null; Vector mVector = null; public ReceiveClientThread(TestSocketServer pTestSocketServer,Socket pSocket) { this.mTestSocketServer = pTestSocketServer; this.mSocket = pSocket; } public void run() { while(true) { if(!mRunning) { //在内存中删除相应的客户端信息 break; } try { dis = new DataInputStream(mSocket.getInputStream()); ObjectInputStream ois = new ObjectInputStream(dis); mVector = (Vector)ois.readObject(); for(int i = 0 ; i < mVector.size(); i ++) { System.out.println(mSocket.getInetAddress().getHostAddress()+"输出:" + (String)mVector.elementAt(i)); } //保存客户端信息:存入文件或临时内存中 this.mTestSocketServer.mAllClientVector.addElement(mVector); //把mAllClientVector中的所有信息返回给客户端 } catch(Exception iDios) { } } }} 在java里怎么实现不满足条件指定控制台输出指定对象附源码 谁能帮我这一小段C#转成Java代码 [求助] 敲一下回车 怎么输出? 如何将HTML转换为字符串. 出错信息看不懂呀 急问!! throws Exception下try..catch还起作用吗? 动态调用函数问题,高手Help!!! 思路求教,分不够再加 谁现在学thinkinjava了,留个qq,,,好多问题我自己弄不明白/// 请推鉴一个JavaBean的开发环境(JBuilder,BeanBox,BeanBuilder),多谢! 好奇怪啊,大家帮忙啊
不过好象用UDP更好一点呀!
[email protected]
我的程序是用socket传送二维数组,有那位大虾发给我实例,最好有代码
小弟感激不尽
可以发到我邮箱里,[email protected]
当然了,贴出来也行。
再次感谢。
import java.io.*;
import java.net.*;
import java.util.Vector;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2001</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/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);
byte[] sendByte = new byte[3];
sendByte[0] = (byte)0;
sendByte[1] = (byte)1;
sendByte[2] = (byte)2;
dos = new DataOutputStream(mSocket.getOutputStream());
ObjectOutputStream oos = new ObjectOutputStream(dos);
oos.writeObject(sendByte);
}
catch(Exception eSocket)
{
}
} public static void main(String [] args)
{ new TestSocketClient(args);
}
}
import java.net.*;
import java.util.Vector;/**
*
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/public class TestSocketServer
{
ServerSocket mServerSocket = null;
Socket mSocket = null;
public Vector mAllClientVector = new Vector(5,2);//存放所有客户端信息 public TestSocketServer()
{
try
{
mServerSocket = new ServerSocket(9009,15);
mSocket = mServerSocket.accept();
ReceiveClientThread rCT = new ReceiveClientThread(this,mSocket);
rCT.start();
}
catch(Exception eSocket)
{
}
} public static void main(String [] args)
{
new TestSocketServer();
}
}class ReceiveClientThread extends Thread
{
private TestSocketServer mTestSocketServer = null;
private Socket mSocket = null;
private boolean mRunning = true;
DataInputStream dis = null;
DataOutputStream dos = null;
Vector mVector = null;
public ReceiveClientThread(TestSocketServer pTestSocketServer,Socket pSocket)
{
this.mTestSocketServer = pTestSocketServer;
this.mSocket = pSocket;
} public void run()
{
while(true)
{
if(!mRunning)
{
//在内存中删除相应的客户端信息
break;
}
try
{
dis = new DataInputStream(mSocket.getInputStream());
ObjectInputStream ois = new ObjectInputStream(dis);
mVector = (Vector)ois.readObject();
for(int i = 0 ; i < mVector.size(); i ++)
{
System.out.println(mSocket.getInetAddress().getHostAddress()+"输出:" + (String)mVector.elementAt(i));
}
//保存客户端信息:存入文件或临时内存中
this.mTestSocketServer.mAllClientVector.addElement(mVector);
//把mAllClientVector中的所有信息返回给客户端
}
catch(Exception iDios)
{
}
}
}
}