zoukankan      html  css  js  c++  java
  • java网络编程之UDP实例

    package Socket;
    
    import java.net.DatagramPacket;
    import java.net.InetAddress;
    
    public class Dgram {
    
        public static DatagramPacket toDatagram(String s, InetAddress destIA,
                int destPort) {
            byte[] buf = new byte[s.length() + 1];
            s.getBytes(0, s.length(), buf, 0);
            return new DatagramPacket(buf, buf.length, destIA, destPort);
        }
    
        public static String toString(DatagramPacket p) {
            return new String(p.getData(), 0, p.getLength());
        }
    }
    package Socket;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;
    
    public class ChatterServer {
        static final int INPORT = 1712;
        private byte[] buf = new byte[1000];
        private DatagramPacket dp = new DatagramPacket(buf, buf.length);
        private DatagramSocket socket;
    
        public ChatterServer() {
            try {
                socket = new DatagramSocket(INPORT);// 创建一接收消息的对象,而不是每次接收消息都创建一个
                System.out.println("Server started");
                while (true) {
                    socket.receive(dp);
                    //接收到客户端的消息
                    String rcvd = Dgram.toString(dp) + ",from address:"
                            + dp.getAddress() + ",port:" + dp.getPort();
                    System.out.println("From Client:"+rcvd);
                    
                    String echoString = "From Server Echoed:" + rcvd;
                    DatagramPacket echo = Dgram.toDatagram(echoString,
                            dp.getAddress(), dp.getPort());
                    //将数据包发送给客户端
                    socket.send(echo);
                }
            } catch (SocketException e) {
                System.err.println("Can't open socket");
                System.exit(1);
            } catch (IOException e) {
                System.err.println("Communication error");
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            new ChatterServer();
        }
    }
    package Socket;
    
    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 ChatterClient extends Thread {
    
        private DatagramSocket s;
        private InetAddress hostAddress;
        private byte[] buf = new byte[1000];
        private DatagramPacket dp = new DatagramPacket(buf, buf.length);
        private int id;
    
        public ChatterClient(int identifier) {
            id = identifier;
            try {
                s = new DatagramSocket();
                hostAddress = InetAddress.getByName("localhost");
    
            } catch (UnknownHostException e) {
                System.err.println("Cannot find host");
                System.exit(1);
            } catch (SocketException e) {
                System.err.println("Can't open socket");
                e.printStackTrace();
                System.exit(1);
            }
            System.out.println("ChatterClient starting");
        }
    
        public void run() {
            try {
                for (int i = 0; i < 25; i++) {
                    String outMessage = "Client #" + id + ",message #" + i;
                    s.send(Dgram.toDatagram(outMessage, hostAddress,
                            ChatterServer.INPORT));
                    s.receive(dp);
                    String rcvd = "Client #" + id + ",rcvd from " + dp.getAddress()
                            + ", " + dp.getPort() + ":" + Dgram.toString(dp);
                    System.out.println(rcvd);
                }
            } catch (IOException e) {
                e.printStackTrace();
                System.exit(1);
            }
        }
    
        public static void main(String[] args) {
            for (int i = 0; i < 10; i++) {
                new ChatterClient(i).start();
            }
        }
    }
  • 相关阅读:
    网络兼职轻松赚
    微信H5支付demo
    支付宝H5支付demo
    笔记本安装SSD固态硬盘详细的优化设置
    JQuery的AJAX
    第二次面试
    存储过程的总结
    SQl数据操作和查询
    面对考试毫无畏惧的SSH
    掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3789291.html
Copyright © 2011-2022 走看看