I have recently studied Java to implement OICQ. This is a simple programming of my client. Mainly through the UDP mode, the user's dialogue is implemented. A method of serialization is used. The following is the source code, please add more comments.
// Send message class message.java
Import java.io.serializable;
Public Class Message IMPLEments Serializable {
Private string msg; private string deestid;
Public Message (String Msg, String ID, String Destid {this.msg = msg; this.id = id; this.destid = destID;} // get message content public string getMessage () {return msg;} // The sender's IP public string getId () {return id;} // gets the acceptor's IP public string getDestid () {return destid;}}
// Acceptance party receiver.javaimport java.net. *; Import java.io. *;
public class Receiver extends Thread {private Message msg; private DatagramPacket packet; private DatagramSocket socket; private byte [] recvBuf = new byte [500]; public Receiver () {try {// Create udp to receive the data packet. Packet = New DataGrampacke (Recvbuf, Recvbuf.Length); // Create an acceptor's UDP port to receive data socket = new DataGramsocket (7002);} catch (Exception E) {}}}}}}}} catches
Public void run () {TRY {while (true) {// accepts data socket.receive (packet);
ByteArrayInputStream byteStream = new ByteArrayInputStream (recvBuf); ObjectInputStream is = new ObjectInputStream (new BufferedInputStream (byteStram)); Object o = is.readObject (); msg = (Message) o; is.close ();
System.out.println (Msg.getMessage ());}} catch (throwable t) {t.printStackTrace ();}}}
// Sender sender.javaimport java.Net. *; Import java.io. *;
Public class sender extends thread {
Private Message Msg; Private DataGramsocket Socket; Private DataGrampacket Packet; Public Sender (Message MSG) {Try {this.msg = msg; // Get the IP address of the destination String destID = msg.getDestid (); // Getting to send message content String destID = msg.getDestIDString message = msg.getMessage (); ByteArrayOutputStream byteStream = new ByteArrayOutputStream (500); ObjectOutputStream os = new ObjectOutputStream (new BufferedOutputStream (byteStream)); os.writeObject (msg); os.flush () Byte [] sendbuf = bytestream.tobyteaRray (); // Create a UDP packet to send data packet = new data, inetdress.getbyname (destID), 7002); // creation send UDP socket Specify the socket. Socket = New DataGramsocket (7000); Os.close ();} catch (throwable t) {T.PrintStackTrace ();}} public void run () {Try {// Send message socket.send (Packet); // Send it to close the socket. Socket.close ();} catch (throwable t) {t.printStackTrace ();}}}
// Test program udp_chat.javaimport java.io. *; import java.net. *;
Public class udp_chat {public udp_chat (string s) {}
Public static void main (string args []) throws exception {Message A = new Message, "211.92.155.200", "211.92.155.200"); new sender (a) .start (); New Receiver () .start ();}}
Reference article: Java Tips 40: Data Package Transfer Objects Use Data Pack to Convection Java Objects Bootcool@263.net