网络客户端

来源:互联网 发布:文件夹隐藏加密软件 编辑:程序博客网 时间:2024/04/29 19:02
Java代码 1.    // 访问服务器  2.    Socket socket = new Socket("127.0.0.1", 8080);  3.    // todo something  4.    socket.close();  5.      6.    // 查找网络地址  7.    InetAddress.getByName(hostName).getHostAddress()); // 根据主机名得到IP地址  8.    InetAddress.getByName(ipAddr).getHostName()); // 根据IP地址得到主机名  9.      10.    // 连接具体异常  11.    UnknownHostException  12.    NoRouteToHostException  13.    ConnectException  14.      15.    // Socket读写文本数据  16.    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  17.    String remoteTime = in.readline();  18.    PrintWriter out = new PrintWriter(socket.getOutputStream(), true);  19.    out.print("send message to client \r\n");  20.    out.flush();  21.      22.    // Socket读写二进制数据  23.    DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));  24.    long remoteTime = (long)(in.readUnsignedByte() << 24);  25.    DataOutputStream out = new DataOutputStream(socket.getOutputStream(), true);  26.      27.    // Socket读写串行化数据  28.    ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));  29.    Object o = in.readObject();  30.    if (o instanceof Date) // 验证对象类型  31.    ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream(), true);  32.      33.    // UDP数据报  34.    private final static int PACKET_SIZE = 1024;  35.          36.    String host = "EV001B389673DE";  37.    InetAddress serverAddr = InetAddress.getByName(host);  38.    DatagramSocket socket = new DatagramSocket();  39.    byte[] buffer = new byte[PACKET_SIZE]; // 分配数据缓冲空间  40.    DatagramPacket packet = new DatagramPacket(buffer, PACKET_SIZE, serverAddr, 8080);  41.    packet.setLength(PACKET_SIZE-1); // 设置数据长度  42.    socket.send(packet);  43.    socket.receive(packet); // 接收数据   
服务器端: Socket Java代码 1.    // 创建ServerSocket  2.    ServerSocket serverSocket;  3.    Socket clientSocket;  4.              5.    serverSocket = new ServerSocket(9999);  6.    while ((clientSocket = serverSocket.accept()) != null) {  7.        System.out.println("Accept from client " + s.getInetAddress());  8.        s.close();  9.    }  10.      11.    // 监听内部网  12.    public static final short PORT = 9999;  13.    public static final String INSIDE_HOST = "acmewidgets-inside"; // 网络接口名  14.    public static final int BACKLOG = 10; // 待发数  15.    serverSocket = new ServerSocket(PORT, BACKLOG, InetAddress.getByName(INSIDE_HOST));  16.      17.    // 返回相应对象  18.    ServerSocket serverSocket =  new ServerSocket(9999);;  19.    Socket clientSocket;  20.    BufferedReader in = null;  21.    PrintWriter out = null;  22.    while (true) {  23.        clientSocket = serverSocket.accept();  24.        in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "8859_1"));  25.        out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "8859_1"), true);  26.        String echoLine;  27.        while ((echoLine = in.readLine()) != null) {  28.            System.out.println("Read " + echoLine);  29.            out.print(echoLine + "\r\n");  30.        }  31.    }  32.    以 上例子返回字符串,如果返回二进制,则使用DataOutputStream;返回对象,使用ObjectOutputStream  33.      34.    // 处理多客户端  35.    需要 把接收数据的处理放入多线程中  36.    public class EchoServerThreaded {  37.        public static final int ECHOPORT = 7;  38.        public static final int NUM_THREADS = 4;  39.      40.        public static void main(String[] av) {  41.            new EchoServerThreaded(ECHOPORT, NUM_THREADS);  42.        }  43.      44.        public EchoServerThreaded2(int port, int numThreads) {  45.            ServerSocket servSock;  46.            Socket clientSocket;  47.            try {  48.                servSock = new ServerSocket(ECHOPORT);  49.            } catch(IOException e) {  50.                throw new RuntimeException("Could not create ServerSocket " + e);  51.            }  52.            for (int i = 0; i < numThreads; i++) {  53.                new Handler(servSock, i).start();  54.            }  55.        }  56.    }  57.    class Handler extends Thread {  58.        ServerSocket servSock;  59.        int threadNumber;  60.      61.        Handler(ServerSocket s, int i) {  62.            super();  63.            servSock = s;  64.            threadNumber = i;  65.            setName("Thread " + threadNumber);  66.        }  67.      68.        public void run() {  69.            while (true) {  70.                try {  71.                    System.out.println(getName() + " waiting");  72.                    Socket clientSocket;  73.                    synchronized (servSock) {  74.                        clientSocket = servSock.accept();  75.                    }  76.                    System.out.println(getName() + " starting, IP=" + clientSocket.getInetAddress());  77.                    BufferedReader is = new BufferedReader(new InputStreamReader(  78.                        clientSocket.getInputStream()));  79.                    PrintStream os = new PrintStream(clientSocket.getOutputStream(), true);  80.                    String line;  81.                    while ((line = is.readLine()) != null) {  82.                        os.print(line + "\r\n");  83.                        os.flush();  84.                    }  85.                    System.out.println(getName() + " ENDED ");  86.                    clientSocket.close();  87.                } catch (IOException ex) {  88.                    System.out.println(getName() + ": IO Error on socket " + ex);  89.                    return;  90.                }  91.            }  92.        }  93.    }  94.      95.    // 使用SSL和JSSE保护Web服务器  96.    SSLServerSocketFactory ssf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();  97.    ServerSocket serverSocket = ssf.createServerSocket(8080);  98.      99.    // Log4j  100.    Level 级别: DEBUG < INFO < WARN < ERROR < FATAL < OFF  101.    Appender: 输 出信息  102.    ConsoleAppender: 输出控制台 System.out  103.      104.    // 找到网络接口  105.    Enumeration list = NetworkInterface.getNetworkInterfaces();  106.    while (list.hasMoreElements()) {  107.        NetworkInterface iface = (NetworkInterface)list.nextElement();  108.        System.out.println(iface.getDisplayName());  109.        Enumeration addrs = iface.getInetAddresses();  110.        while (addrs.hasMoreElements()) {  111.            InetAddress addr = (InetAddress)addrs.nextElement();  112.            System.out.println(addr);  113.        }  114.    }   
0 0