• java网络编程之TCP实例


    Dgram类

    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());
        }
    }
    MultiJabberServer
    package Socket;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    class ServeOneJabber extends Thread {
        private Socket socket;
        private BufferedReader in;
        private PrintWriter out;
    
        public ServeOneJabber(Socket s) throws IOException {
            socket = s;
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
                    socket.getOutputStream())), true);
            start();
        }
    
        public void run() {
            try {
                while (true) {
                    String str = in.readLine();
                    if (str.equals("END"))
                        break;
                    System.out.println("Echoing:" + str);
                    out.println("From Server:"+str);
                }
                System.out.println("closing...");
            } catch (IOException e) {
            } finally {
                try {
                    socket.close();
                } catch (Exception e2) {
                }
            }
        }
    }
    
    public class MultiJabberServer {
        static final int PORT = 8080;
    
        public static void main(String[] args) throws IOException {
            ServerSocket s = new ServerSocket(PORT);
            System.out.println("Server Started");
            try {
                while (true) {
                    Socket socket = s.accept();
                    try {
                        new ServeOneJabber(socket);
                    } catch (IOException e) {
                        socket.close();
                    }
                }
            } finally {
                s.close();
            }
        }
    
    }
    MultiJabberClient
    package Socket;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    
    class JabberClientThread extends Thread {
        private Socket socket;
        private BufferedReader in;
        private PrintWriter out;
        private static int counter = 0;
        private int id = counter++;
        private static int threadcount = 0;
    
        public static int threadCount() {
            return threadcount;
        }
    
        public JabberClientThread(InetAddress addr) {
            System.out.println("Making client " + id);
            threadcount++;
            try {
                socket = new Socket(addr, MultiJabberServer.PORT);
            } catch (IOException e) {
            }
            try {
                in = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
                out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
                        socket.getOutputStream())), true);
                start();
            } catch (IOException e) {
                try {
                    socket.close();
                } catch (IOException e2) {
                }
            }
        }
    
        public void run() {
            try {
                for (int i = 0; i < 25; i++) {
                    out.println("Client " + id + ":" + i);
                    String str = in.readLine();
                    System.out.println(str);
                }
                out.println("END");
            } catch (IOException e) {
            } finally {
                try {
                    socket.close();
                } catch (IOException e2) {
                    threadcount--;
                }
            }
        }
    }
    
    public class MultiJabberClient {
        static final int MAX_THREADS = 40;
    
        public static void main(String[] args) throws IOException,
                InterruptedException {
            InetAddress addr = InetAddress.getByName(null);
            while (true) {
                if (JabberClientThread.threadCount() < MAX_THREADS)
                    new JabberClientThread(addr);
                Thread.currentThread().sleep(100);
            }
        }
    }
  • 相关阅读:
    windows2016优化
    oracle什么时候需要commit
    Mysql的锁表,锁行记录
    git add
    linux系统优化
    解决rsyslog启动问题
    HAProxy启用日志功能
    nc命令获取远端端口状态
    将pip源更换到国内镜像
    Centos7.6下安装Python3.7
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3789284.html
Copyright © 2020-2023  润新知