zoukankan      html  css  js  c++  java
  • socket的简单例子

    socket的简单例子:

    场景:在本地模拟客户端和服务端通过socket,进行简单的连接,客户端发送请求到服务端,而服务端也可以接受请求后,返回信息给客户端。

    解析:

    1:客户端通过socket,向某一服务端(ip),的应用(端口号),进行连接。

    2:服务端会对该应用进行监听,并处于一个阻塞的状态,等待着请求的访问。

    3:若两者接通后就可以通过流的方式进行数据信息的交互。

    代码:新建两个简单的测试的类(分别代表客户端和服务端)

    package com.lj;
    
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    
    public class SimpleClient {
        public static void main(String[] args) {
    
            try {
                //连接某个机器的服务端的应用
                Socket socket = new Socket("127.0.0.1",8888);
    
                //接通客户端后,就可以与之进行交流,java.io
                //发送消息到服务端 对自身而言是输出
                DataOutputStream output = new DataOutputStream(socket.getOutputStream());
                output.writeUTF("[来自client的消息]:hello 你好");
    
                System.out.println("客户端发送完毕!");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class SimpleServer {
    
        public static void main(String[] args) {
    
            try {
                //服务端需要监听一个应用
                ServerSocket serverSocket = new ServerSocket(8888);
    
                //监听的应用处于阻塞的状态
                Socket socket = serverSocket.accept();
    
                System.out.println("连接正常!");
    
                //接通客户端后,就可以与之进行交流,java.io
                //发送消息到服务端 对自身而言是输入
                DataInputStream input = new DataInputStream(socket.getInputStream());
                String context = input.readUTF();
                System.out.println(context);
                System.out.println("服务端就收完毕!");
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    测试:

    先执行服务端,对端口为8888的应用进行监听,控制台不会输出,因为正处于阻塞的状态等待着请求访问接通。

    再执行客户端,向服务端进行请求,这是若是能正常连接,则可以,正常跑连接后的逻辑,交互也可以使用文件流的所有技术。

  • 相关阅读:
    初识Qgis
    特征向量与特征值及其应用
    练习 |委托方在每个月重复委案率
    Redis命令总结
    sharepoint2013 Restore-SPSite 报错,采用数据库还原
    MySql定期存档数据
    PostgreSQL的 fdw 跨库使用
    java&c# dec 加密,通用
    TypeScript
    CentOS挂载windows共享文件夹
  • 原文地址:https://www.cnblogs.com/liangxiaojin/p/12530094.html
Copyright © 2011-2022 走看看