因为我想把发送的信息封装到一个类里,如:String from,String to,Date date,String msg
我已经用Socket做了一个模型出来了,但是如果用Socket,好象只能发送流,无法发送一个数据包,只能将这些数据都写到流里请问我做这样一个聊天室(毕业设计),用哪个做比较好
Socket or DatagramSocket

解决方案 »

  1.   

    那再麻烦你帮我看看这2段代码,这样写对不对,参考网上的例子写的
    现在的问题是我不知道getData()和setData()这2个方法是什么意思
    怎么样把收到的数据包的内容打出来?import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;public class NewSvr {
    public static void main(String[] args)
    {
    DatagramSocket serverSocket = null;
    try
    {
    serverSocket = new DatagramSocket(8888);
    }
    catch (SocketException e)
    {
    e.printStackTrace();

    DatagramPacket packet = new DatagramPacket(new byte[512], 512); 
    try
    {
    serverSocket.receive(packet);
    //System.out.println(packet.getData());
    //怎么把收到的包的内容在这里打出来
    }
    catch (IOException e)
    {
    e.printStackTrace();
    } }
    }/***********************************/import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    import java.net.UnknownHostException;public class NewClt {
    public static void main(String[] args)
    {
    DatagramSocket clientSocket = null;
    try
    {
    clientSocket = new DatagramSocket();
    }
    catch (SocketException e)
    {
    e.printStackTrace();
    }
    String toSend = "This is the data to send!";
    byte[] sendbuf = new byte[ toSend.length() ];
    sendbuf = toSend.getBytes();
    InetAddress address = null;
    try
    {
    address = InetAddress.getLocalHost();
    }
    catch (UnknownHostException e1)
    {
    e1.printStackTrace();
    }
    DatagramPacket sendPacket = new DatagramPacket( sendbuf, sendbuf.length, address, 8888);
    try
    {
    clientSocket.send(sendPacket);
    }
    catch (IOException e)
    {
    e.printStackTrace();
    } }
    }
      

  2.   

    System.out.println(new String(packet.getData(), 0, packet.getLength()));准备结贴了