Socket编程

来源:互联网 发布:数据库物理设计图visio 编辑:程序博客网 时间:2024/05/29 13:38

Socket编程


1.服务端
/** * 基于TCP协议的Socket通信*//** * 服务端 * 1.创建ServerSocket对象,绑定监听端口   2.通过accept()方法监听客户端请求   3.连接建立后,通过输入流读取客户端发送的请求信息   4.通过输出流向客户端发送响应信息   5.关闭相关资源 */public class Server {    public static void main(String[] args) throws IOException {        //1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口        ServerSocket serverSocket = new ServerSocket(5678); //1024-65535的某个端口        //2、调用accept()方法开始监听,等待客户端的连接        Socket socket = serverSocket.accept();            //3、获取输入流,并读取客户端信息        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));           String info =null;        while((info = br.readLine()) != null){            System.out.println("我是服务器,客户端说:" + info);        }               socket.shutdownInput();//关闭输入流        //4、获取输出流,响应客户端的请求        OutputStream os = socket.getOutputStream();        PrintWriter pw = new PrintWriter(os);        pw.write("欢迎您!");        pw.flush();                //5、关闭资源        pw.close();        os.close();        br.close();        socket.close();        serverSocket.close();    }    }
2.客户端
/** * 客户端 * 1.创建Socket对象,指明需要连接的服务器的地址和端口号 * 2.连接建立后,通过输出流向服务器端发送请求信息 * 3.通过输入流获取服务器响应的信息 * 4.关闭响应资源 */public class Client {        public static void main(String[] args) throws Exception {          //1、创建客户端Socket,指定服务器地址和端口        Socket socket = new Socket(InetAddress.getLocalHost(), 5678);          //2、获取输出流,向服务器端发送信息        PrintWriter pw = new PrintWriter(socket.getOutputStream());//将字节输出流包装成打印流        pw.write("用户名:admin;密码:123");        pw.flush();        socket.shutdownOutput();//关闭输出流        //3、获取输入流,并读取服务器端的响应信息        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));        String info = null;        while((info=br.readLine()) != null){            System.out.println("我是客户端,服务器说:" + info);        }        //4、关闭资源        br.close();        pw.close();        socket.close();    }    }
3.应用多线程实现服务器与多客户端之间的通信
/** * 1.服务器端创建ServerSocket,循环调用accept()等待客户端连接   2.客户端创建一个socket并请求和服务器端连接   3.服务器端接受苦读段请求,创建socket与该客户建立专线连接   4.建立连接的两个socket在一个单独的线程上对话   5.服务器端继续等待新的连接 */public class Server2 {    public static void main(String[] args) throws IOException {        ServerSocket serverSocket = new ServerSocket(5678);        Socket socket = null;        int count = 0;//记录客户端的数量        while(true){            socket = serverSocket.accept();            ServerThread serverThread = new ServerThread(socket);             serverThread.start();             count++;             System.out.println("客户端连接的数量:" + count);        }    }    }
//服务器线程处理public class ServerThread extends Thread{        //和本线程相关的socket    Socket socket = null;        public ServerThread(Socket socket){        this.socket = socket;    }        public void run(){        //服务器处理代码            }    }

http://www.cnblogs.com/rocomp/p/4790340.html

==============================================================================

Java Socket重要参数讲解

http://www.cnblogs.com/ggjucheng/archive/2012/01/06/2314679.html

0 0
原创粉丝点击