日期:2014-05-16  浏览次数:20753 次

Linux下TCP,UDP以及广播与多播通信(代码大全)

TCP、UDP、广播、多播的客户端服务器代码链接地址为(for free):

tcp代码:http://download.csdn.net/detail/huangminqiang201209/4860661
udp代码:http://download.csdn.net/detail/huangminqiang201209/4860665
广播代码:http://download.csdn.net/detail/huangminqiang201209/4860672
多播代码:http://download.csdn.net/detail/huangminqiang201209/4860719

 

TCP

    Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。  
     在因特网协议族(Internet protocol suite)四层协议中,TCP层是位于IP层之上,应用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。  

 

UDP
     UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。

 

广播

     广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。
    考虑包含多个主机的共享信道网络如以太网。每个以太网帧包含源主机和目的主机的以太网地址(48 bit)。通常每个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播(unicast)。在这种方式下,任意两个主机的通信不会干扰网内其他主机(可能引起争夺共享信道的情况除外)。然而,有时一个主机要向网上的所有其他主机发送帧,这就是广播。通过ARP和RARP可以看到这一过程。多播(multicast) 处于单播和广播之间:帧仅传送给属于多播组的多个主机。

 

多播

    多播数据仅由对该数据报感兴趣的接口接收,也就是说,由运行希望参加多播会话应用系统的主机上的接口接收。广播一般局限与局域网,而多播既可用于局域网,也可用于广域网。
IP多播提供两类服务:
    1) 向多个目的地址传送数据。有许多向多个接收者传送信息的应用:例如交互式会议系统和向多个接收者分发邮件或新闻。如果不采用多播,目前这些应用大多采用TCP来完成(向每个目的地址传送一个单独的数据复制)。然而,即使使用多播,某些应用可能继续采用TCP来保证它的可靠性。
    2) 客户对服务器的请求。例如,无盘工作站需要确定启动引导服务器。目前,这项服务是通过广播来提供的,但是使用多播可降低不提供这项服务主机的负担。

 

函数

1.socket 函数
   指定期望的通信协议类型。
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>

 int socket(int domain, int type, int protocol);
        返回:若成功则为非负描述符,出错则为-1。

参数说明:
 domain:   指明协议族,也称为协议域,是一个常值。
           AF_INET              IPv4 协议
           AF_INET6             IPv6 协议
           AF_LOCAL/AF_UNIX       Unix协议域
           AF_ROUTE                 路由套接字
           AF_KEY                   密匙套接字
    
 type:    指明套接字的类型。
           SOCK_STREAM    &n