黑马程序员--TCP&UDP

来源:互联网 发布:淘宝 双十一 编辑:程序博客网 时间:2024/05/01 09:30
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

网络通讯要素
. IP地址
. 网络中设备的标识
. 不易记忆,可用主机名
. 本地回环地址:127.0.0.1 主机名:localhost
. 端口号
. 用于标识进程的逻辑地址,不同进程的标识
. 有效端口:0~65535,其中0~1024系统使用或保留端口。
-----------------------------------
. 传输协议
. 通讯的规则
. 常见协议:TCP,UDP
-----------------------------------
UDP:
.数据报通信协议,属于传输层,是一种无连接的协议。
. 每个数据报都是一条独立的信息,包括完整的源地址或目的地址。
. 它在网络上会以任何可能的路径传往目的地,所以能否到达目的地、到达目的地的时间及内容的正确性都是不能保证的。

特点:
. 将数据及源和目的封装成数据包中,不需要建立连接
. 每个数据报的大小在限制在64k内
. 因无连接,是不可靠协议
. 不需要建立连接,速度快
-----------------------------------

TCP:传输控制协议,属于传输层,是一种面向连接的协议。

发送方和接收方所对应的两个socket之间必须建立连接,当一个socket(通常是服务器socket)等待建立连接,另一个socket可以要求进行连接,一旦这两个socket连接起来,
它们就可以进行双向数据传输,双方都可以进行发送或接收操作。

特点:
. 建立连接,形成传输数据的通道。
. 在连接中进行大数据量传输
. 通过三次握手完成连接,是可靠协议
. 必须建立连接,效率会稍低
-----------------------------------
总的来说,TCP协议提供可靠的服务,UDP协议提供高效率的服务。

高可靠性的TCP服务提供面向连接的服务,主要用于一次传输大量报文的情形,如文件传输,远程登录等;
高效率的UDP协议提供无连接的数据报服务,用于一次传输少量的报文。即使发生传输错误,也可以重新传输并且不会为此付出多少代价。如:聊天软件、视频会议。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TCP
-----------------------------------
服务器:属于被动等待连接,所以服务器端启动后,只需要监听本地计算机的某个固定端口即可。

构造方法:
ServerSocket();创建非绑定服务器套接字。
ServerSocket(int port);创建绑定到特定端口的服务器套接字。
ServerSocket(int port,int count);count表示服务器所能支持的最大连接数。
-----------------------------------
客户端:首先发起连接的程序。客户端一般实现程序基本界面和基本逻辑。

常用构造方法:
Socket();通过系统默认类型的 SocketImpl 创建未连接套接字。
Socket(InetAddress address,int port);创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host,int port);创建一个流套接字并将其连接到指定主机上的指定端口号。

-----------------------------------
 服务器                                 
1、监听端口
建立ServerSocket对象并指定端口,ServerSocket只负责接收连接
ServerSocket serverSocket=new ServerSocket(int port);
2、获取连接
Socket s=serverSocket.accept();
3、交换数据
通过Socket对象取得得输入流,读取客户端信息
InputStream in=s.getInputStream();
通过Socket对象取得输出流,将数据传至客户端
OutputStream out=s.getOutputStream();
4、关闭资源s.close();

 客户端
1、建立连接
Socket socket=new Socket(InetAddress address,int port);
2、交换数据
OutputStream out=s.getOutputStream();
InputStream in=s.getInputStream();
3、关闭资源
s.close();

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UDP


常用类:
DatagramSocket:用于在程序建立传送数据报的通信协议。用来接收和发送数据报。

构造方法:DatagramSocket()、DatagramSocket(int port)。
DatagramPacket:传送数据报的载体。
构造方法:接收时:DatagramPacket(byte buf[],int length);
                     发送时:DatagramPacket(byte buf[],int length,InetAddress address,int iport);

-----------------------------------
接收端:
1.创建接收端;
2.创建数据包,存储接收来的数据;
3.调用socket接收方法,接收数据;
4.取出数据包中数据;
5.关闭socket; 

        DatagramSocket socket=new DatagramSocket(int port);//(1)
        DatagramPacket packet=new DatagramPacket(buf,256);//(2)
        socket.receive(packet);//(3)
        String data=new String(packet.getData());//(4)
        socket.close();//(5)
-----------------------------------
发送端: 
        (1)创建发送端;
        (2)创建数据包,封装数据;
        (3)调用socket发送方法,发送数据;
        (5)关闭socket; 

        DatagramSocket socket=new DatagramSocket(int port);//(1)
        DatagramPacket packet=new DatagramPacket(buf,256,InetAddress address,int iport);//(2)
        socket.send(packet);//(3)
        socket.close();//(4)



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net