Java中使用Socket实现服务器端和客户端通讯

来源:互联网 发布:如何清空数据库 编辑:程序博客网 时间:2024/05/16 14:37

创建服务器端serverSocket

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务端 * @author Administrator * */public class Server {    public static void main(String[] args) throws IOException {        //创建一个服务器端socket,指定绑定的端口号,并监听此端口        ServerSocket serverSocket = new ServerSocket(8888);        //调用accept()方法开始监听,等待客户端的连接        System.out.println("**********服务器即将启动,等待客户端的连接*************");        Socket socket = serverSocket.accept();        //获取输入流,并读取客户端信息        InputStream inp = socket.getInputStream();        //把字节流转换成字符流        InputStreamReader isr = new InputStreamReader(inp);        //为字符流增加缓冲区        BufferedReader bfr = new BufferedReader(isr);        String info = null;        while((info=bfr.readLine())!=null){//循环读取数据            System.out.println("我是服务器,客户端说:"+info);        }        socket.shutdownInput();//关闭输入流        //向客户端传递的信息        OutputStream ots = socket.getOutputStream();        PrintWriter pw = new PrintWriter(ots);        pw.write("欢迎登陆");        pw.flush();                //关闭资源        pw.close();        ots.close();        bfr.close();        isr.close();        inp.close();        socket.close();        serverSocket.close();            }    }

创建客户端socket

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;/** * 客户端 * @author Administrator * */public class Client {    public static void main(String[] args) {        try {            //创建一个客户端socket            Socket socket = new Socket("localhost",8888);            //向服务器端传递信息            OutputStream ots = socket.getOutputStream();            PrintWriter pw = new PrintWriter(ots);            pw.write("用户名:admin;密码:123");            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);            }            //关闭资源            br.close();            isr.close();            is.close();            pw.close();            ots.close();            socket.close();        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }    }

先启动服务器端,再启动客户端

服务器端打印结果为

**********服务器即将启动,等待客户端的连接*************我是服务器,客户端说:用户名:admin;密码:123

客户端打印结果

我是客户端,服务器说:欢迎登陆


博文转自:http://www.cnblogs.com/jpwz/p/5695093.html
















阅读全文
0 0
原创粉丝点击