java笔记(七)ServerSocket跟Socket

来源:互联网 发布:影子网络真的很恐怖吗 编辑:程序博客网 时间:2024/05/22 00:32

一言一语客户端

服务端ServerScoket

import java.io.IOException;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class ServerSocketDemo {    public static void Server(){        try {        System.out.println("服务器已启动,监听6666端口");            //开放端口,监听            ServerSocket serverSocket = new ServerSocket(6666);            //等待客户端            Socket socket = serverSocket.accept();            //服务端拿到客户端的输入,getInputStrean            Scanner clientScanner = new Scanner(socket.getInputStream());            //服务端输出到客户端getOutputStream            PrintWriter pw = new PrintWriter(socket.getOutputStream());            //发送给客户端一个欢迎语            pw.println("欢迎!");            pw.flush();            //服务端的输入流,服务端Scanner            Scanner keybordScanner = new Scanner(System.in);            //接收客户端的请求,循环接收。每接收一行,就从键盘获取一条语句,再发给客户端            while(true){                String clinetSay = clientScanner.nextLine();                if(!clinetSay.equals("")){                    System.out.println("客户端说:"+clinetSay);                }                if(clinetSay.equals("exit")){                    break;                }                System.out.println("请输入:");                //从键盘接收一条语句,                String serverSay = keybordScanner.nextLine();                //发送给服务端                pw.println(serverSay);                pw.flush();            }//          关闭所有            serverSocket.close();            socket.close();            keybordScanner.close();            clientScanner.close();            pw.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Server();    }}

客户端Client

import java.io.IOException;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;public class ClientSocketDemo {    public static void test(){        try {            //通过IP跟端口号连接服务端            Socket socket = new Socket("192.168.13.13",6666);            //客户端拿到服务端的输入,getInputStream            Scanner s = new Scanner(socket.getInputStream());            //客户端输出到服务端,getOutputStream            PrintWriter pw = new PrintWriter(socket.getOutputStream());            //接受到服务端发来的信息            System.out.println(s.nextLine());            //服务端的输入流,服务端Scanner            Scanner clientScanner = new Scanner(System.in);            ////接收服务端的请求,循环接收。每接收一行,就从键盘获取一条语句,再发给服务端            while(true){                System.out.println("请输入:");                String clientSay = clientScanner.nextLine();                //发送给客户端                pw.println(clientSay);                pw.flush();                String serverSay = s.nextLine();                System.out.println("服务端说:"+serverSay);            }        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        test();    }}

多线程客户端

import java.io.IOException;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class ServerThread {    public static void Server(){        System.out.println("服务器已启动,监听5555端口");        try {            //开放端口并监听            ServerSocket serverSocket = new ServerSocket(5555);            while(true){        //等待客户端接入        Socket socket = serverSocket.accept();        //获取客户端连接的IP    System.out.println("客户端连接的IP:"+socket.getInetAddress());                SocketThread st = new SocketThread(socket);                st.start();            }        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Server();    }}//外部类继承Threadclass SocketThread extends Thread{    Socket socket;    public SocketThread(Socket socket){        this.socket = socket;    }    // 重写run方法    @Override    public void run() {        super.run();    }    public void getSocket(Socket socket){        this.socket = socket;        try {            PrintWriter output = new PrintWriter(socket.getOutputStream(),true);            Scanner input = new Scanner(socket.getInputStream());        } catch (IOException e) {            e.printStackTrace();        }    }}

同步处理信息客户端

import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;public class ClientThread {    public static void CilentDemo(){        final PrintWriter output;        final Scanner input;        try {            Socket socket = new Socket("192.168.14.72",8888);            input = new Scanner(socket.getInputStream());            output = new PrintWriter(socket.getOutputStream());            final Scanner scanner = new Scanner(System.in);            // 发送消息线程            new Thread() {                public void run() {                    try {                        while (true) {                             // 从控制台扫描一行数据                            String data = scanner.nextLine();                            output.println(data);                            output.flush();                        }                    } catch (Exception e) {                        e.printStackTrace();                    }                }            }.start();            // 读取消息线程            new Thread() {                public void run() {                    try {                        while (true) {                            String data = input.nextLine();                            System.out.println(data);                        }                    } catch (Exception e) {                        System.out.println("已断开连接");                    }                }            }.start();        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        CilentDemo();    }}
原创粉丝点击