• 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的应用进行监听,控制台不会输出,因为正处于阻塞的状态等待着请求访问接通。

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

  • 相关阅读:
    [转]读取并修改App.config文件
    [转]线程和进程的概念
    实习日志(3)
    实习日志2
    实习小感,回学校啦~~~~
    请教LUA高手一段代码,希望帮忙谢谢!
    实习的日子
    vs显示 error LNK2019: 无法解析的外部符号 _main解决办法
    创建一个新窗口进程并返回进程ID号和进程的主线程ID号
    显示基本图形界面第一天
  • 原文地址:https://www.cnblogs.com/liangxiaojin/p/12530094.html
Copyright © 2020-2023  润新知