网络编程总结(一)

      在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是TCP协议和UDP协议,其中UDP协议是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。

UDP连接:

    UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

TCP协议:

TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”

UDP中有两个重要的类:DatagramPacket:数据报 和DatagramSocket:码头搬运工。

DatagramPacket:相当于装货箱。

   |----构造方法:DatagramPacket(byte[] buf,int length)。这个构造方法在创建datagrampacket对象的时候,指定了封装数据的字节数组和数据的大小,没有指定ip地址和端口好,很明显,这样的对象只能用于接收端,不能用于发送端。因为发送端一定要明确指出数据的目的地(ip地址和端口号),而接收端不需要明确知道数据的来源,只需要接收到数据即可。

    |---构造方法:DatagramPacket(byte[] buf,int length,InetAddress address,int port)构造数据包,将长度为length的包发送到指定主机上的指定端口号。该方法不仅指定了封装数据的字节数组的数据的大小,还指定了数据包的目标IP地址(addr)和端口号(port).该对象通常用于发送端,因为发送数据时必须指定接受端的ip地址和端口号,就好像发送货物的集装箱上面必须标明接收人的地址一样。

常用方法:

    --InetAddress getAddress();

    --int getPort()

    --byte[] getData()

    --int getLength()

DatagramSocket:

    |--DatagramSocket()该构造方法用于创建发送端的DatagramSocket对象,在创建DatagramSocket对象时,并没有指定端口号,此时,系统会分配一个没有其他网络程序所使用的端口号

    |--DatagramSocket(int port)改构造方法用于创建接收端的DatagramSocket对象,又可以创建发送端的DatagramSocket对象,在创建接收端的Datagramsocket对象的时候,必须要指定一个端口号,这样就可以监听指定的端口。

常用方法:

    --void receive(DatagramPacket p)从套接字上接受数据包

    --void send(DatagramPacket p)从此套接字发送数据报包


TCP中有两个重要的类:Socket和serverSocket类

ServerSocket:

    |--ServerSocket(int port) 该构造方法在创建serversocket对象的时候,就可以将其绑定到一个指定的端口上

常用方法:

    --Socket accept()倾听并接收此套接字的连接

    --InetAddress getInetAddress()返回此服务器套接字的本地地址。

    serversocket对象负责监听某台计算机的某个端口号,在创建serversocket对象后,需要继续调用该对象的accept()方法,接收来自客户端的强求,当执行了accept()方法后,服务器端程序会发生阻塞,直到客户端发出连接请求,accept()方法才会返回一个socket对象用于和客户端实现通信,程序才能继续向下执行。

Socket:

    |--Socket(String host ,int port);创建一个流套接字并将其连接到指定主机上的指定端口号

        使用该构造方法在创建Socket对象时,会根据参数去连接在指定地址和端口上运行的服务器程序,其中参数host接收的是一个字符串类型的IP地址。

    |--Socket(InetAddress address,int port)创建一个套接字并将其连接到指定IP地址的指定端口号

        该方法在使用上与第二个构造方法类似,参数address用于接收一个InetAddress类型的对象。在以上Socket的构造方法中,最常用的是第一个构造方法。

常用方法:

    --int getPort()

    --InetAddress getLocalAddress()

    --void close() 

    --InputStream getInputStream()

    --OutputStream getOutputStream()

在socket类常用方法中,getInputStream()和getOutputStream()方法分别用于获取输入流和输出流,当客户端和服务器端建立连接后,数据是以IO流的形式进行交互的,从而实现通信。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值