Java 网络监听——Socket

// Server
package com.topking.ftp.util;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer extends Frame
{
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 2333390035339206037L;
   
    static Button b = new Button("    ");
   
    static Label l1 = new Label("No connection on port 8888");
   
    public TcpServer() throws HeadlessException
    {
        super("Listening");
        setLayout(new FlowLayout(FlowLayout.LEFT));
        add(b);
        add(l1);
        b.setBackground(Color.RED);
        setVisible(true);
        pack();
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
       
        b.addActionListener(new ButtonListener());
       
    }
   
    class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
           
        }
       
    }
   
    public static void main(String args[])
    {
        new TcpServer();
        int port;
        ServerSocket server_socket;
        BufferedReader input;
        try
        {
            port = Integer.parseInt(args[0]);
        }
        catch (Exception e)
        {
            System.out.println("port = 8888 (default)");
            port = 8888;
        }
       
        try
        {
            server_socket = new ServerSocket(port);
            System.out.println("Server waiting for client on port "
                    + server_socket.getLocalPort());
            // server infinite loop
            while (true)
            {
                Socket socket = server_socket.accept();
                b.setBackground(Color.GREEN);
                l1.setText("Connection" + socket.getInetAddress());
                System.out.println("New connection accepted "
                        + socket.getInetAddress() + ":" + socket.getPort());
                input = new BufferedReader(new InputStreamReader(socket
                        .getInputStream()));
                // print received data
                try
                {
                    while (true)
                    {
                        String message = input.readLine();
                        if (message == null)
                            break;
                        System.out.println(message);
                    }
                }
                catch (IOException e)
                {
                    System.out.println(e);
                }
               
                // connection closed by client
                try
                {
                    socket.close();
                    b.setBackground(Color.RED);
                    l1.setText("No connection on port 8888");
                    System.out.println("Connection closed by client");
                }
                catch (IOException e)
                {
                    System.out.println(e);
                }
            }
        }
        catch (IOException e)
        {
            System.out.println(e);
        }
    }
}



// Client
package com.topking.ftp.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient
{
    public static void main(String[] args)
    {
        int port = 8888;
        String server = "localhost";
        Socket socket = null;
        String lineToBeSent;
        BufferedReader input;
        PrintWriter output;
        int ERROR = 1;
       
        // read arguments
        if (args.length == 2)
        {
            server = args[0];
            try
            {
                port = Integer.parseInt(args[1]);
            }
            catch (Exception e)
            {
                System.out.println("server port = 1000 (default)");
                port = 1500;
            }
        }
       
        // connect to server
        try
        {
            socket = new Socket(server, port);
            System.out.println("Connected with server "
                    + socket.getInetAddress() + ":" + socket.getPort());
        }
        catch (UnknownHostException e)
        {
            System.out.println(e);
            System.exit(ERROR);
        }
        catch (IOException e)
        {
            System.out.println(e);
            System.exit(ERROR);
        }
       
        try
        {
            input = new BufferedReader(new InputStreamReader(System.in));
            output = new PrintWriter(socket.getOutputStream(), true);
           
            // get user input and transmit it to server
            while (true)
            {
                lineToBeSent = input.readLine();
                // stop if input line is "."
                if (lineToBeSent.equals("."))
                    break;
                output.println(lineToBeSent);
            }
        }
        catch (IOException e)
        {
            System.out.println(e);
        }
       
        try
        {
            socket.close();
        }
        catch (IOException e)
        {
            System.out.println(e);
        }
    }
   
}

你可能感兴趣的:(java,.net,socket)