• java中进行socket编程实现tcp、udp协议总结


    socket编程

    1,计算机进行通信编程的基础是有ip地址加端口号的主机唯一标示、有相应的一致的协议即tcp/ip。ip地址用来区分主机,端口号用来区分计算机上不同的应用软件。

    2,java提供的网络功能主要有四大类  

      1)InetAddress类,封装ip地址代表网络上的硬件资源。  

      2)URL,统一资源定位符

      3)Sockets:使用tcp协议实现网络通信的Socket相关类  

      4)Datagram:使用udp协议,将数据保存在数据报中通过网络进行通信的相关类。

    3,InetAddress

      该类需要通过静态方法InetAddress.getLocalHost()得到实例。 提供了得到主机名,ip地址等的方法,具体可查api文档。该类可以得到本地主机和远程主机的相关硬件信息。

    4,URL

      类似这种的字符串叫url,利用该类可以得到url中的各种详细信息,见代码:

    5,Socket类和ServerSocket类实现tcp连接

      基本原理是通过ServerSocket启动监听程序,Socket发起请求建立连接,并通过绑定在两个对象上的InputStream,OutputSteam流来交换数据。

      练习实例思路:

      1)建立服务器端监听程序并绑定端口,ServerSocket serverSocket = new ServerSocket(8888);  循环监听程序,若有accept() 方法监听到客户端连接,建立socket连接,并启动响应线程。

      2)建立客户端程序,向服务器发送连接请求。Socket socket=new Socket("localhost", 8888);得到此socket上的输出流,并封装成打印流,向服务器发送字符消息。

      3)编写服务器端响应的多线程处理程序ServerThread,此类为自己编写非api,使用服务端建立的套接字通道,接收客户端数据,并根据内容回复。

      总结: 1)ServerSocket的accept方法得到连接后返回一个Socket对象,即为对等客户端的连接通道。服务端会有很多Socket对象。

          2)服务器端需要一个实现多线程的处理类,来并发的处理多个客户端的请求。

            3)代码详见程序。

    6,通过DatagramPacket、DatagramSocket类实现UDP通信。

      其中DatagramPacket表示udp通信的数据报类,通过构造方法可以将通信信息和要发送的地址保存到类中;DatagramSocket表示一次端到端的通信,传入DatagramPacket信息,DatagramSocket的send方法表示发送。receive方法表示接收,并且是阻塞式的在得到数据报发入前不会进行任何操作!

    7,整体总结

      1)不管是tcp还是udp服务器端肯定需要多线程,要注意设置线程优先级提高性能。

      2)tcp中,关闭了socket中的输出流,则socket也关闭了,因此,可在连接中不关流,在确定没有输出输入的时候再关闭socket;

      3)可不传输字符串,而使用ObjectInputStream和ObjectOutputStream传输对象

      4)结合io流的基本用法,可以用通讯类在不同的机器间发送文件。

      5) 两个协议实现中receive方法和accept方法均为阻塞式的。

  • 相关阅读:
    ora-01847:月份中日的值必须介于 1 和当月最后一日之间
    (转)ORACLE中关于外键缺少索引的探讨和总结
    (转) Oracle性能优化-读懂执行计划
    shutdown immediate 持久无法关闭数据库之解决方案
    Oracle11g adump目录下面.aud增长导致空间撑满无法删除导致CRS无法启动的解决方法
    linux几种常见的文件内容查找和替换命令
    unzip解压3G或者4G以上文件失败的解决方法
    IMP-00058: ORACLE error 1882 encountered
    AIX文件系统/var空间100%的问题
    html5手机网站需要加的那些meta/link标签,html5 meta全解(转)
  • 原文地址:https://www.cnblogs.com/sunqian/p/5223897.html
Copyright © 2020-2023  润新知