zoukankan      html  css  js  c++  java
  • Socket通信

    Java提供的网络功能有四大类:
    1、InetAddress:用于标识网络上的硬件资源
    2、URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据
    3、Sockets:使用TCP协议实现网络通信的Socket相关的类
    4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信

    Socket通信实现步骤
    1、创建ServerSocket和Socket
    2、打开链接到Socket的输入/输出流
    3、按照协议对Socket进行读/写操作
    4、关闭输入输出流、关闭Socket

    服务器与客户端通信示例(单个客户端):

    服务端:

    //1、创建一个服务端Socket,即ServerSocket,并指定绑定的端口,并监听此端口
    ServerSocket serverSocket = new ServerSocket(8888);
    //2、调用accept()方法开始监听,等待客户端的连接
    Socket socket = serverSocket.accept();
    //3、获取输入流,读取客户端信息
    InputStream in = socket.getInputStream();
    
    InputStreamReader isr = new InputStreamReader(in);
    BufferedReader bufr = new BufferedReader(isr);
    String str = null;
    while((str = bufr.readline())!=null){
      System.out.println(str);
    }
    socket.shutdownInput();// 关闭输入流
    //4、关闭资源
    bufr.close();
    isr.close();
    in.close();
    socket.close();
    serverSocket.close();

    客户端:

    //1、创建客户端Socket,指定服务器地址和端口
    Socket socket = new Socket("localhost",8888);
    //2、获取输出流,向服务端发送信息
    OutputStream out = socket.getOutputStream;
    PrintWriter pw = new PrintWriter(out);
    pw.write("我是客户端");
    pw.flush();
    socket.shutdownOutput();// 关闭输出流
    //3.关闭资源
    pw.close();
    out.close();
    socket.close();

    应用多线程来实现服务器与多客户端之间的通信
    基本步骤
    1、服务器端创建ServerSocket,循环调用accept()等待客户端连接
    2、客户端创建一个socket并请求和服务器端连接
    3、服务器端接收客户端请求,创建socket与该客户端建立专线连接
    4、建立连接的两个socket在一个单独的线程上对话
    5、服务器端继续等待新的连接

    UDP编程

    DatagramPacket:表示数据报包

    DatagramSocket:进行端到端通信的类


    服务器端实现步骤:

    1、创建DatagramSocket,指定端口号

    2、创建DatagramPacket

    3、接收客户端发送的数据信息

    4、读取数据


    客户端实现步骤:

    1、定义发送信息

    2、创建DatagramPacket,包含将要发送的信息

    3、创建DatagramSocket,

    4、发送数据

    总结:
    1、多线程的优先级
    为设置优先级可能会导致运行时速度非常慢,科降低优先级
    2、是否关闭输出流和输入流
    对于同一个socket,如果关闭了输出流,则与该输出流关联的socket也会被关闭,所以一般不用关闭流,直接关闭socket即可
    3、使用TCP通信传输对象(序列化和反序列化)
    4、socket编程传递文件

  • 相关阅读:
    【代码笔记】iOS-字符串的分割
    【代码笔记】iOS-柱状图
    【代码笔记】iOS-UILable电子表显示
    【代码笔记】iOS-UILable高度自适应(sizeWithFont)
    【代码笔记】iOS-中国地图
    【代码笔记】iOS-正在加载
    【代码笔记】iOS-账号,密码记住
    【代码笔记】iOS-由身份证号码返回性别
    【代码笔记】iOS-用户发布后能保存崩溃
    【代码笔记】iOS-一个tableView,两个section
  • 原文地址:https://www.cnblogs.com/linjian/p/4654406.html
Copyright © 2011-2022 走看看