zoukankan      html  css  js  c++  java
  • TCP客户端服务器通信

    TCP通信服务器端:
    接收客户端请求,读取客户端数据并返回数据
    表示服务器的类:java.net.ServerSocket
    构造方法:
    ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
    服务器端必须明确是哪个客户端请求的服务器
    所以可以用accept()方法获取到连接的客户端Socket对象
    成员方法:
    Socket accept() 侦听并接受到此套接字的连接。

    服务器的实现过程:
        1、创建服务器ServerSocket对象,和系统要指定的端口号
        2、使用创建服务器ServerSocket对象的accept()方法获取到连接的客户端Socket对象
        3、使用Socket 方法中的getOutputStream 获取网络字节输出流InputStream对象
        4、使用网络字节输出流InputStream对象中的read()读取客户端发送的数据
        5、使用Socket 方法中的getOutputStream()获取网络字节输出流OutputStream对象
        6、使用网络字节输出流OutputStream对象中的write写给客户端内容
        7、释放资源(Socket,ServerSocket)
    
    public class TCPServer{
        public static void main(String[] args) throws IOException {
            //1、创建服务器ServerSocket对象,和系统要指定的端口号
            ServerSocket ss = new ServerSocket(5055);
            //2、使用创建服务器ServerSocket对象的accept()方法获取到连接的客户端Socket对象
            Socket socket = ss.accept();
            //3、使用Socket 方法中的getOutputStream 获取网络字节输出流InputStream对象
            InputStream inputStream = socket.getInputStream();
            //4、使用网络字节输出流InputStream对象中的read()读取客户端发送的数据
            byte[] bytes = new byte[1024];
            int len = inputStream.read(bytes);
            System.out.println(new String(bytes,0,len));
            //5、使用Socket 方法中的getOutputStream()获取网络字节输出流OutputStream对象
            OutputStream outputStream = socket.getOutputStream();
            //6、使用网络字节输出流OutputStream对象中的write写给客户端内容
            outputStream.write("收到嘻嘻!!".getBytes());
            //7、释放资源(Socket,ServerSocket)
            socket.close();
            ss.close();
        }
    }
    

    TCP客户端:
    向服务器发送请求数据,服务器会回复信息
    套接字:包含了IP+端口号
    构造方法:
    Socket(InetAddress address, int port)
    创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
    参数:InetAddress address 服务器的IP地址;int port服务器的端口号
    成员方法:
    InputStream getInputStream()
    返回此套接字的输入流
    OutputStream getOutputStream()
    返回此套接字的输出流。
    void close()
    关闭此套接字。

    步骤:
        1、创建客户端对象Socket,用构造方法绑定服务器的端口号和地址
        2、使用Socket 方法中的getOutputStream 获取网络字节输出流OutputStream对象
        3、使用网络字节输出流OutputStream对象中的write写给服务器内容
        4、使用Socket 方法中的getInputStream 获取网络字节输出流InputStream对象
        5、获取网络字节输出流InputStream对象的中的read方法读取服务器发送回来的数据
        6、释放资源(Socket)
    注意事项:
        1、客户端和服务器交互必须使用Socket提供的网络流 不能使用自己创建的流对象
        2、当我们创建客户端对象Socket的时候,就会去请求服务器经过三次握手,如果服务器没有启用
        就会抛出异常java.net.ConnectException: Connection refused: connect
        如果已经启用了,就可以进行交互。
    
    public class TCPClient {
        public static void main(String[] args) throws IOException{
            //1、创建客户端对象Socket,用构造方法绑定服务器的端口号和地址
            Socket socket = new Socket("127.0.0.1",5055);
            //2、使用Socket 方法中的getOutputStream 获取网络字节输出流OutputStream对象
            OutputStream outputStream = socket.getOutputStream();
            //3、使用网络字节输出流OutputStream对象中的write写给服务器内容
            outputStream.write("你好服务器".getBytes());
            //4、使用Socket 方法中的getInputStream 获取网络字节输出流InputStream对象
            InputStream inputStream = socket.getInputStream();
            //5、获取网络字节输出流InputStream对象的中的read方法读取服务器发送回来的数据
            byte[] bytes = new byte[1024];
            int len = inputStream.read(bytes);
            System.out.println(new String(bytes,0,len));
            //6、释放资源(Socket)
            socket.close();
        }
    }
    
  • 相关阅读:
    买不起笔记本,只好自己动手做一个啦!(转)
    Microsoft.Press.Microsoft.Visual.C.Sharp.2005.Step.by.Step.Oct.2005
    将指定网页添加到收藏夹的方法(c#)
    一个任意获得页面控件的方法
    取客户端MAC地址的方法
    关于在活动目录(ACTIVE DIRECTORY)中创建组织单位和用户
    无 Cookie 的 ASP.NET
    吉祥三宝(设计篇)
    C语言第一次实验报告
    C语言第二次实验作业
  • 原文地址:https://www.cnblogs.com/liuzeyu12a/p/12358971.html
Copyright © 2011-2022 走看看