socket tcp与udp的区别

socket tcp连接常规流程:

服务器端:
socket-->bind-->listen-->accept->recv(send)-->closesocket


客户端:
sokcet->connect->send(recv)-->closesocket


可以参考:
http://atu82.bokee.com/4667655.html


Udp socket 常规流程

服务器端:

socket-->bind->recvfrom(sendto)-->closesocket


客户端:
socket->sendto(recvfrom)-->closesocket


socket Udp 和tcp的区别:

1)其实Udp客户端也可以调用connect函数,这样就可以使用recv(read)函数接收数据,使用send(write)发送数据;
2)和TCP套接字一样,UDP套接字也通过socket( )函数创建,不同的是UDP套接字可以通过一个套接字描述符在不同的主机之间发送和接
收报文。创建UDP客户端的典型过程为:首先调用socket( )函数,接下来定义发送和接收数据的远程主机和端口,然后将套接字传递给
connect( )函数。套接字描述符在后面会用于发送和接收数据。除此之外,发送数据的目标主机和端口可以在数据“写入”时指定,
这样就可以用一个套接字发送数据到多个主机。
3)UDP数据报的发送可以使用write( )、send( )或sendto( )函数。如果使用write( )或send( ),则必须事先以UDP套接字为参数调用
connect( )函数,此外,如果使用sendto( )函数则可以在发送数据时再指定目标地址及端口。接收UDP数据报可以使用read( )、
recv( )或recvfrom( )函数。如果使用read( )或recv( ),则必须事先调用connect( )函数;如果使用recvfrom( ),则可以在接收
数据报时获得源IP地址和端口。

4)与TCP不同的是,在UDP套接字上收发的数据是作为单独的单元接收或发送的,而不是作为字节流。每次调用write( )、send( )、或
sendto( )函数都会在线路上产生一个UDP数据报。接收到的UDP数据报的读取也是一个单独的操作,如果读取报文时提供的缓冲区长
度不够,则会返回一个出错代码。

5)如果UDP数据报的长度超出了本地或者任意一个必经的网络上的最大片长度,则必须进行分段,这在性能上会有不良影响,因此有些
操作系统对此做了限制或者不予支持。

可以参考:

http://blog.csdn.net/jackychu/article/details/2978811

 

 

C语言是一种通用的编程语言,用于开发各种类型的应用程序。在C语言中,可以使用socket库来创建和管理网络连接。下面是关于创建socketTCPUDP区别的介绍: 1. 创建socket: 在C语言中,可以使用socket函数来创建一个socket对象。该函数位于<sys/socket.h>头文件中,通过指定协议族(如AF_INET)和套接字类型(如SOCK_STREAM或SOCK_DGRAM),可以创建不同类型的socket。 2. TCPUDP区别TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议,用于在网络上传输数据。它们之间的主要区别如下: - 连接性:TCP是面向连接的协议,而UDP是无连接的协议。TCP在通信之前需要建立连接,而UDP则直接发送数据包。 - 可靠性:TCP提供可靠的数据传输,它使用确认和重传机制来确保数据的完整性和可靠性。UDP则不提供可靠性保证,它只是简单地将数据包发送出去,不关心是否到达目标。 - 速度:由于TCP提供了可靠性保证,它的传输速度相对较慢。而UDP没有额外的确认和重传机制,因此传输速度较快。 - 数据包顺序:TCP保证数据包按照发送的顺序进行传输,而UDP则不保证数据包的顺序。 总的来说,TCP适用于需要可靠传输和顺序性的应用场景,如文件传输、网页浏览等。而UDP适用于实时性要求较高、对数据完整性要求不高的应用场景,如音视频传输、实时游戏等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值