zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
  • 相关阅读:
    存储过程参数不能使用函数
    .gitignore git已跟踪文件不生效
    Css选择器-层次选择器(关系选择器)
    Mysql自定义变量的作用
    jQuery 鼠标滑过Div变色
    DataTable导出excel 设置单元格格式
    layui table 详细讲解
    npm 常用命令详解
    SQL Server 2008下轻松调试T-SQL语句和存储过程
    帆软报表常用功能
  • 原文地址:https://www.cnblogs.com/zhuawang/p/3789284.html
Copyright © 2011-2022 走看看