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

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

  • 相关阅读:
    uva 11404 Palindromic Subsequence(LCS回文串,最小字典序)
    paip.输入法编程---输入法ATIaN历史记录 v8b
    uva 10859 Placing Lampposts (树形dp)
    【设计模式】学习笔记8:命令模式
    Android自定义ProgressDialog
    (二十四)解释器模式详解
    Hadoop--两个简单的MapReduce程序
    BMP图像的灰度化---C++实现
    android 数组数据绑定到listview
    Win64 驱动内核编程-10.突破WIN7的PatchGuard
  • 原文地址:https://www.cnblogs.com/liangxiaojin/p/12530094.html
Copyright © 2011-2022 走看看