美文网首页
(必须会)java简单网络服务链接

(必须会)java简单网络服务链接

作者: 蛋炒饭_By | 来源:发表于2018-01-18 17:21 被阅读19次

    1.服务器两台电脑链接。

    第一个类

    package com.company;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.Socket;
    
    /**
     * Created by ttc on 2018/1/18.
     */
    //客户端程序
    public class TcpClient {
        public static void main(String[] args) throws IOException {
            //去连接服务器,指定(ip和端口)
            Socket socket = new Socket("10.25.41.8",999);
            //客户端发送hello给服务器
            String str = "CNGSB";
    
    //        FileOutputStream fileOutputStream = new FileOutputStream("d:/helloworld.txt");
            byte[] buffer = str.getBytes();
    //        fileOutputStream.write(buffer,0,buffer.length);
    
    //
            OutputStream os = socket.getOutputStream();
            os.write(buffer,0,buffer.length);
    
            System.out.println("退出");
        }
    }
    
    

    第二个类

    package com.company;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Created by ttc on 2018/1/18.
     */
    public class Main {
        public static void main(String[] args) throws IOException {
            //监听端口  999
            //服务器端需要创建2个Socket,其中一个socket是用来监听端口的(获得客户端连接的)
            ServerSocket serverSocket = new ServerSocket(999);
            System.out.println("开始监听");
            Socket socket = serverSocket.accept();//等待接受连接,阻塞
    
            InputStream inputStream = socket.getInputStream();
            byte[] buffer = new byte[100];
            int len = inputStream.read(buffer);
    
            //把读到的字节转换成字符串,显示出来
            String string = new String(buffer,0,len);
            System.out.println(string);
            System.out.println("退出");
        }
    }
    

    2.监听在从第一基础上在完善以下以IP地址来确定。

    第一个类

    package com.company;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.SocketException;
    
    /**
     * Created by ttc on 2018/1/19.
     */
    public class ClientThread extends Thread {
    
        Socket socket;
    
        public ClientThread(Socket socket) {
            this.socket = socket;
        }
    
        @Override//和某个客户端通信(收发数据)
        public void run()
        {
    
            while (true)
            {
                try {
                    InputStream inputStream = null;
                    try {
                        inputStream = socket.getInputStream();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    byte[] buffer = new byte[100];
                    System.out.println(Thread.currentThread().getName()+"开始读取数据");
                    int len = 0;//,阻塞
                    try {
                        len = inputStream.read(buffer);
                    } catch (IOException e) {
                        System.out.println("客户端已经退出");
                        e.printStackTrace();
                        break;
                    }
    
                    //将信息发回给客户端
                    OutputStream os = null;
                    try {
                        os = socket.getOutputStream();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    try {
                        os.write(buffer, 0, len);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                    //把读到的字节转换成字符串,显示出来
                    String string = new String(buffer, 0, len);
                    System.out.println(string);
                } catch (Exception exception) {
                    System.out.println("客户端已经退出dd");
                    break;
                }
            }
    
    
    
    
        }
    }
    

    第二个类

    package com.company;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.util.Scanner;
    
    /**
     * Created by ttc on 2018/1/18.
     */
    //客户端程序
    public class TcpClient {
        public static void main(String[] args) throws IOException, InterruptedException {
            //去连接服务器,指定(ip和端口)
            Socket socket = new Socket("10.25.41.7",5555);
            OutputStream os = null;
            InputStream is = null;
            //客户端发送hello给服务器
            String str = "";
            Scanner scanner = new Scanner(System.in);
    //        FileOutputStream fileOutputStream = new FileOutputStream("d:/helloworld.txt");
            //  for(int i = 0; i < 3; i++)
            while(true)
            {
                System.out.println("请输入要和服务器说的话");
                str = scanner.next();
                if(str.equals("bye"))
                {
                    break;
                }
    
                byte[] buffer = str.getBytes();
                os = socket.getOutputStream();//获得输出流
                os.write(buffer,0,buffer.length);//往输出流里写数据,相当于向服务器放送信息
    
    
    
                is = socket.getInputStream();
                byte[] bufferRead = new byte[100];
                int len = is.read(bufferRead);
                String string = new String(bufferRead,0,len);
                System.out.println("服务器回应" + string);
            }
    
            if(os!=null)
            {
                os.close();
            }
    
            if(is!=null)
            {
                is.close();
            }
    
            socket.close();
    
            System.out.println("退出");
        }
    }
    

    第三个类

    package com.company;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Created by ttc on 2018/1/18.
     */
    public class TcpServer {
        public static void main(String[] args) throws IOException {
            //监听端口  999
            //服务器端需要创建2个Socket,其中一个socket是用来监听端口的(获得客户端连接的)
            ServerSocket serverSocket = new ServerSocket(5555);
            System.out.println("开始监听");
            while (true)
            {
                Socket socket = serverSocket.accept();//等待接受连接,阻塞
                ClientThread clientThread = new ClientThread(socket);
                clientThread.start();
            }
    
    
    //        for(int i = 0; i < 3; i++) {
    //            InputStream inputStream = socket.getInputStream();
    //            byte[] buffer = new byte[100];
    //            System.out.println("开始读取数据");
    //            int len = inputStream.read(buffer);//,阻塞
    //
    //            //将信息发回给客户端
    //            OutputStream os = socket.getOutputStream();
    //            os.write(buffer, 0, len);
    //
    //            //把读到的字节转换成字符串,显示出来
    //            String string = new String(buffer, 0, len);
    //            System.out.println(string);
    //        }
    
    
        }
    }
    

    3.ubc和ipc这两个必须要会的以上面的基础上来完善以改变(必须会)。

    第一个类

    package com.company;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    
    /**
     * Created by ttc on 2018/1/19.
     */
    public class SimpleUDPServer {
        public static void main(String[] args) throws IOException {
            DatagramSocket datagramSocket = new DatagramSocket(6666);
    
            while (true)
            {
                byte[] buffer = new byte[1000];
                DatagramPacket datagramPacketRecv = new DatagramPacket(buffer,buffer.length);
    
                System.out.println("准备接收数据");
                datagramSocket.receive(datagramPacketRecv);//代码阻塞,等待客户端发送数据
    
                //得到客户端发过来的数据
                byte[] buffer2 = datagramPacketRecv.getData();
                String string = new String(buffer2, 0, buffer2.length);
    
                System.out.println(string);
    
                InetAddress inetAddress = datagramPacketRecv.getAddress();//得到客户端的地址信息
                String ipClinent = inetAddress.getHostAddress();
    
    
                System.out.println(ipClinent);
    
    
                int port = datagramPacketRecv.getPort();//获得客户端程序的端口
                System.out.println("客户端发送端口" + port);
                System.out.println("收到数据");
    
    
    
                //给客户端回应信息
                DatagramPacket datagramPacketSend = new DatagramPacket(buffer2,buffer2.length,inetAddress,port);
                datagramSocket.send(datagramPacketSend);
            }
    
    
        }
    }
    
    

    第二个类

    package com.company;
    
    import java.io.IOException;
    import java.net.*;
    
    /**
     * Created by ttc on 2018/1/19.
     */
    public class SimpleUdpClient {
        public static void main(String[] args) throws IOException {
    
            String serverIp = "127.0.0.1";
            int port = 6666;
            DatagramSocket datagramSocket = new DatagramSocket();
    
            InetAddress inetAddress = InetAddress.getByName(serverIp);
    
            String string = "hello";
            byte[] buffer = string.getBytes();
    
            DatagramPacket datagramPacketSend = new DatagramPacket(buffer, buffer.length, inetAddress, port);
    
            datagramSocket.send(datagramPacketSend);
    
            byte[] bufferRecv = new byte[1000];
            DatagramPacket datagramPacketRecv = new DatagramPacket(bufferRecv,bufferRecv.length);
    
            datagramSocket.receive(datagramPacketRecv);//阻塞效果
            byte[] data = datagramPacketRecv.getData();
            String string1 = new String(data, 0 ,data.length);
            System.out.println(string1);
        }
    }
    
    1. 服务器应用返回服务器应用在第三题以上改善一下
      第一个类
    package com.company;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.util.Scanner;
    
    /**
     * Created by ttc on 2018/1/18.
     */
    //客户端程序
    public class TcpClient {
        public static void main(String[] args) throws IOException, InterruptedException {
            //去连接服务器,指定(ip和端口)
            Socket socket = new Socket("127.0.0.1",5555);
            OutputStream os = null;
            InputStream is = null;
            //客户端发送hello给服务器
            String str = "";
            Scanner scanner = new Scanner(System.in);
    //        FileOutputStream fileOutputStream = new FileOutputStream("d:/helloworld.txt");
          //  for(int i = 0; i < 3; i++)
            while(true)
            {
                System.out.println("请输入一个数");
                str = scanner.next();
                if(!str.equals("quit"))//那用户输入的就应该是一个数字形式的字符串
                {
                    try{
                        Integer.parseInt(str);
    
                        byte[] buffer = str.getBytes();
                        os = socket.getOutputStream();//获得输出流
                        os.write(buffer,0,buffer.length);//往输出流里写数据,相当于向服务器放送信息
    
    
    
                        is = socket.getInputStream();
                        byte[] bufferRead = new byte[100];
                        int len = is.read(bufferRead);
                        String string = new String(bufferRead,0,len);
    
                        if(string.equals("0"))
                        {
                            System.out.println("您输入的是质数");
                        }
                        else if(string.equals("1"))
                        {
                            System.out.println("您输入的不是质数");
                        }
    
    
                    }
                    catch (Exception ex)
                    {
                        System.out.println("请输入正确的数字");
    
                    }
    
                }
                else{
                    break;
                }
    
    
            }
    
            if(os!=null)
            {
                os.close();
            }
    
            if(is!=null)
            {
                is.close();
            }
    
            socket.close();
    
            System.out.println("退出");
        }
    }
    

    第二个类

    package com.company;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * Created by ttc on 2018/1/18.
     */
    public class TcpServer {
        public static void main(String[] args) throws IOException {
            //监听端口  999
            //服务器端需要创建2个Socket,其中一个socket是用来监听端口的(获得客户端连接的)
            ServerSocket serverSocket = new ServerSocket(5555);
            System.out.println("开始监听");
            while (true)
            {
                Socket socket = serverSocket.accept();//等待接受连接,阻塞
                ClientThread clientThread = new ClientThread(socket);
                clientThread.start();
            }
    
    
    //        for(int i = 0; i < 3; i++) {
    //            InputStream inputStream = socket.getInputStream();
    //            byte[] buffer = new byte[100];
    //            System.out.println("开始读取数据");
    //            int len = inputStream.read(buffer);//,阻塞
    //
    //            //将信息发回给客户端
    //            OutputStream os = socket.getOutputStream();
    //            os.write(buffer, 0, len);
    //
    //            //把读到的字节转换成字符串,显示出来
    //            String string = new String(buffer, 0, len);
    //            System.out.println(string);
    //        }
    
    
        }
    }
    

    第三个类

    package com.company;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.SocketException;
    
    /**
     * Created by ttc on 2018/1/19.
     */
    public class ClientThread extends Thread {
    
        Socket socket;
    
        public ClientThread(Socket socket) {
            this.socket = socket;
        }
    
        public boolean isZhiShu(int num)
        {
            for(int i = 2; i < num; i++)
            {
                if(num % i == 0)
                {
                    return false;
                }
            }
            return true;
        }
    
        @Override//和某个客户端通信(收发数据)
        public void run()
        {
    
                while (true)
                {
                    try {
                        InputStream inputStream = null;
                        try {
                            inputStream = socket.getInputStream();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        byte[] buffer = new byte[100];
                        System.out.println(Thread.currentThread().getName()+"开始读取数据");
                        int len = 0;//,阻塞
                        try {
                            len = inputStream.read(buffer);
                        } catch (IOException e) {
                            System.out.println("客户端已经退出");
                            e.printStackTrace();
                            break;
                        }
    
                        //把读到的字节转换成字符串,显示出来
                        String string = new String(buffer, 0, len);
                        System.out.println(string);
                        int num = Integer.parseInt(string);
    
                        String response = "";
                        boolean b = isZhiShu(num);
                        if(b==true)//是质数
                        {
                            response = "0";
                        }
                        else
                        {
                            response = "1";
                        }
    
                        byte[] bytes = response.getBytes();
                        //将信息发回给客户端
                        OutputStream os = null;
                        try {
                            os = socket.getOutputStream();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        try {
                            os.write(bytes, 0, bytes.length);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
    
    
    
                    } catch (Exception exception) {
                        System.out.println("客户端已经退出dd");
                        break;
                    }
                }
    
    
    
    
        }
    }
    
    ``` 879

    相关文章

      网友评论

          本文标题:(必须会)java简单网络服务链接

          本文链接:https://www.haomeiwen.com/subject/wfmwoxtx.html