RT,我想要连续发送10个对象到服务器,代码如下
//发送代码for (int i = 0; i < 10; i++)
{
ping = new Ping();


sendMessage(InetAddress.getByName("localhost"), Integer.parseInt(port),
ping);
                }public void sendMessage(InetAddress receiveHost, int receivePort,
Ping message) throws IOException
{
try
{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oout = new ObjectOutputStream(bout); oout.writeObject(message); // 序列化对象
oout.flush(); byte[] sendBuff = bout.toByteArray(); // 转化为字节数组 DatagramPacket datagram = new DatagramPacket(sendBuff,
sendBuff.length, receiveHost, receivePort); DatagramSocket socket = new DatagramSocket(); socket.send(datagram); // 通过DatagramPacket发送对象
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
//接收代码Ping p = receiveMessage();
public Ping receiveMessage() throws Exception
{
byte[] receiveBuff = new byte[1024];
DatagramPacket datagram = new DatagramPacket(receiveBuff, 1024);
DatagramSocket socket = new DatagramSocket(Integer.parseInt(port));
socket.receive(datagram); Ping message = new Ping(); try
{
ByteArrayInputStream bint = new ByteArrayInputStream(receiveBuff);
ObjectInputStream oint = new ObjectInputStream(bint);
message = (Ping) oint.readObject(); // 反序列化,恢复对象
}
catch (Exception ex)
{
ex.printStackTrace();
} return message;
}现在的问题是,我只能接收到第一个socket,请各位大虾指教

解决方案 »

  1.   

    唉,自己回答吧,已经解决了
    把接收端代码改为byte[] receiveBuff = new byte[1024];
    DatagramSocket socket = new DatagramSocket(Integer.parseInt(port));
    while (true)
    {
    DatagramPacket datagram = new DatagramPacket(receiveBuff, 1024);
    socket.receive(datagram); Ping message = new Ping(); try
    {
    ByteArrayInputStream bint = new ByteArrayInputStream(
    receiveBuff);
    ObjectInputStream oint = new ObjectInputStream(bint);
    message = (Ping) oint.readObject(); // 反序列化,恢复对象
    }
    catch (Exception ex)
    {
    ex.printStackTrace();
    }