网络基础篇——socket网络编程之UDP通信
2016-07-27 00:50
465 查看
UDP和TCP的区别:
UDP是无连接的、不可靠的数据协议报,而TCP是面向连接的,提供可靠的字节流。然而,有些情况更适合用UDP而不是TCP。有些流行的应用程序就是用UDP实现的:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)还有就是qq也是使用的UDP。
UDP和TCP通信模型类似,只是不需要连接,具体过程如下。
1、创建socket
创建一个UDP协议的套接字socket,此时socket的第二个参数不能传递SOCK_STREAM,而是传递SOCK_DGRAM,如创建一个基于IPv4地址族的UDP套接字
sockfd = socket(AF_INET,SOCK_DGRAM,0);
2、数据收发
recvfrom和sendto通常用于UDP协议通讯的I/O
函数原型如下:
socket_t 相当于int ,这里用这个名字为的是提高代码的自说明性。
sockfd:标识一个已连接套接口的描述字。
buf:接收数据缓冲区。
len:缓冲区长度。
flags:调用操作方式。是以下一个或者多个标志的组合体,可通过or操作连在一起:
from:(可选)指针,指向装有源地址的缓冲区。
addrlen:(可选)指针,指向from缓冲区长度值。
服务器:
客户端:
运行结果:
UDP是无连接的、不可靠的数据协议报,而TCP是面向连接的,提供可靠的字节流。然而,有些情况更适合用UDP而不是TCP。有些流行的应用程序就是用UDP实现的:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)还有就是qq也是使用的UDP。
UDP和TCP通信模型类似,只是不需要连接,具体过程如下。
1、创建socket
创建一个UDP协议的套接字socket,此时socket的第二个参数不能传递SOCK_STREAM,而是传递SOCK_DGRAM,如创建一个基于IPv4地址族的UDP套接字
sockfd = socket(AF_INET,SOCK_DGRAM,0);
2、数据收发
recvfrom和sendto通常用于UDP协议通讯的I/O
函数原型如下:
#include<sys/socket.h> ssize_t recvfrom(int sockfd,void* buff,size_t nbytes,int flags,struct sockaddr* from,socklen_t* addrlen); ssize_t sendto(int sockfd,const void* buff,size_t nbytes,const struct sockaddr* to,socklen_t addrlen);
socket_t 相当于int ,这里用这个名字为的是提高代码的自说明性。
sockfd:标识一个已连接套接口的描述字。
buf:接收数据缓冲区。
len:缓冲区长度。
flags:调用操作方式。是以下一个或者多个标志的组合体,可通过or操作连在一起:
from:(可选)指针,指向装有源地址的缓冲区。
addrlen:(可选)指针,指向from缓冲区长度值。
服务器:
客户端:
运行结果:
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- java socket 注意的地方
- java socket 注意的地方
- C#基于UDP实现的P2P语音聊天工具
- C#基于socket模拟http请求的方法
- Lua下基本的网络编程示例
- 简单的Ruby中的Socket编程教程
- Socket不能选择本地IP连接问题如何解决
- C#之Socket操作类实例解析
- 使用C#来编写一个异步的Socket服务器
- C#基于UDP进行异步通信的方法
- C#使用Socket快速判断数据库连接是否正常的方法
- 科学知识:理解socket
- websocket++简单使用及实例分析
- 距离详解Linux下的UDP方式通讯
- linux网络编程用到的网络函数详解用和使用示例
- Android聊天工具基于socket实现
- PHP socket 模拟POST 请求实例代码
- php与flash as3 socket通信传送文件实现代码