Socket套接字的使用小例子

来源:互联网 发布:服装厂出货软件 编辑:程序博客网 时间:2024/05/20 02:30

Socket用来描述IP地址和端口,用来实现不同虚拟机或不同计算机之间的通信。下面是用java语言写的两个主函数,分别模拟服务器端和客户端。

ServerThread.java

public class ServerThread extends Thread {    Socket socket = null;    public ServerThread(Socket socket) {        this.socket = socket;    }    @Override    public void run() {        InputStream is = null;        InputStreamReader isr = null;        BufferedReader br = null;        OutputStream os = null;        PrintWriter pw = null;        try {            // 获取客户端的请求信息            is = socket.getInputStream();            isr = new InputStreamReader(is);            br = new BufferedReader(isr);            String info = null;            while((info=br.readLine())!=null) {                System.out.println("我是服务端, 客户端说: " + info);            }            socket.shutdownInput();            // 向客户端发送信息:            os = socket.getOutputStream();            pw = new PrintWriter(os);            pw.write("欢迎您.......");            pw.flush();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if(pw!=null)                    pw.close();                if(os!=null)                    os.close();                if(br!=null)                    br.close();                if(isr!=null)                    isr.close();                if(is!=null)                    is.close();                if(socket!=null)                    socket.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

Server.java

public class Server {    public static void main(String[] args) {        try {            // 创建服务器端的Socket, ServerSocket, 指定绑定的端口,            ServerSocket serverSocket = new ServerSocket(8888);            System.out.println("服务端,正在等待客户端的响应......");            Socket socket = null;            int count = 0;            while(true) {                // 调用accept()方法监听,等待客户端连接                socket = serverSocket.accept();                ServerThread serverThread = new ServerThread(socket);                serverThread.start();                System.out.println(count++);            }        } catch (IOException e) {            e.printStackTrace();        }    }}

Client.java

public class Client {    public static void main(String[] args) {        try {            // 客户端socket 包含服务器的URL和端口号            Socket socket = new Socket("localhost", 8888);            // 向服务器发送请求            OutputStream os = socket.getOutputStream();            PrintWriter pw = new PrintWriter(os);            pw.write("用户名:admin----密码:134323");            pw.flush();            socket.shutdownOutput();            // 获得服务端的响应内容            InputStream is = socket.getInputStream();            InputStreamReader isr = new InputStreamReader(is);            BufferedReader br = new BufferedReader(isr);            String info = null;            while((info = br.readLine()) != null) {                System.out.println("客户端,服务端说: " + info);            }            // 关闭流            pw.flush();            os.close();            pw.close();            is.close();            isr.close();            br.close();            socket.close();        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}
0 0
原创粉丝点击