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

socket编程 java

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

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

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

  2)URL,统一资源定位符网络

  3)Sockets:使用tcp协议实现网络通讯的Socket相关类  多线程

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

3,InetAddresssocket

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

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方法均为阻塞式的。

相关文章
相关标签/搜索