您的位置:首页 > 理论基础 > 计算机网络

黑马程序员--TCP&UDP

2013-08-13 10:21 162 查看
----------------------
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UDP