现在的位置: 首页 > 综合 > 正文

java中的网络编程详解 TCP 和UDP

2014年09月05日 ⁄ 综合 ⁄ 共 1918字 ⁄ 字号 评论关闭

String.getBytes();方法可以转化为一个byte数组。即byte[] =s.getBytes();

网络技术编程

一、客户端编程步骤

1、  简历网络连接。需要制定连接到的服务器的IP地址和端口号。

2、  交换数据。客户端发送一个请求,服务器响应一个请求。

3、  关闭网络。交换完数据之后,关闭网络连接,释放端口号,内存等资源。

二、服务器端网络编程步骤。

1、  监听端口。服务器端属于被动等待连接,不需要发起连接,只需要监听本地计算机的某个端口即可。

2、  获得连接。客户端连接到服务器端时,就可以获得一个连接。这个连接包括客户端IP地址等信息。获得连接时,需要开启专门的线程处理该连接。每个连接都由一个独立的线程实现。

3、  交换数据。

4、  关闭连接。

首先介绍一个基础的网络类InetAddress类,该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。用getHostName()方法可以获取本地的域名和IP地址。getByName();方法,可以使用域名、IP地址创建对象,getLocalHost()获取本机地址对象,getHostAddress()获取存在inetAddress中的IP地址。

         InetAddressinet=InetAddress.getLocalHost();获得本机地址对象。

 

TCP编程

TCP编程时java.net.Socket代表客户端连接。Java.net.ServerSocket类代表服务器端连接。

         所以创建客户端连接就是创建Socket对象。

         例如:Socket  socket= new Socket(“192.168.1.1”,10000);

         一旦建立连接,我们进行数据传输使用JAVA io流实现。

         OutputStreamos=socket.getOutputStream();获得输出流。

         InputStreamis=socket.getInputStream();  获得输入流。

         先向输出流中写入数据,这些数据会被系统发送出去。然后输入流读取服务器端的反馈信息。

        os.write(data);发送数据。

         Is.read();输出反馈数据.

 

服务器端,ServerSocket  serversocket=newServerSocket(10000);监听,当有客户端连接到达时,需要建立对应的socket对象, Socket  s=serversocket.accept():得连接。

 

UDP编程

  UDP(userDatagram Protocol)用户数据报协议,在JAVA API 中,实现UDP编程的方式,包含客户端编程和服务器网络边恒分别是DatagramSocket和DatagramPacket;

         DatagramSocket类实现网络连接,包括客户端和服务器端网络连接。它实现的就是发送数据时的发射器,以及接受数据时的监听器的角色。

         DatagramPocket实现的对于网络中传输的数据封装。该

对象代表网络中交换的数据。在UDP编程中,无法发送的数据还是接受的数据都需要被处理成DatagramPacket对象,其中包含发送到的地址、发送到的端口以及发送的内容。

         在客户端的建立连接不需要指定IP地址和端口号,DatagramSocket ds=new DatagramSocket();当然也可以指定连接使用的端口号。UDP编程中IO技术不是必须的。在发送数据时,需要将发送的数据转换为byte数组,然后将发送的内容,服务器ip和端口号一起构成一个DatagramPacket类型对象,这样数据的准备就完成了。

         DatagramPacket中的getAddress()获得其数据包中的ip地址,getPort()获得端口号,getData()获得数据,getLength获得数据长度。getAddress获得的ip地址需要赋值给InetAddress对象,然后用它的getHostAddress()方法吧ip地址解析出来。

         说明:DatagramPacketdp=new DatagramPacket(data, data.length, addrdss,  serverport);

                 第一个参数是byte数组类型数据,第二参数是长度,第三参数是InetAddress对象获得的ip地址,第四就是端口号;第三参数创建可用ip地址直接创建;

抱歉!评论已关闭.