recv/send与recvfrom/sendto的区别

首先列出这四个函数的原型:

====================send/recv

#include <sys/socket.h>

ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);

ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);

====================sendto/recvfrom

#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, int flags, const struct sockaddr *to, socklen_t *addrlen);

recv/send可用于TCP套接字及已连接的UDP套接字,而recvfrom/sendto在不指定对端的情况下同recv/send相同,指定对端的情况下可用于未连接的UDP套接字。

时间: 2024-10-12 07:29:12

recv/send与recvfrom/sendto的区别的相关文章

接口处理篇 accept bind connect atan2 htons inet_addr inet_aton inet_ntoa listen ntohl recv send sendto socket

accept(接受socket连线) 相关函数 socket,bind,listen,connect 表头文件 #include<sys/types.h> #include<sys/socket.h> 定义函数 int accept(int s,struct sockaddr * addr,int * addrlen); 函数说明 accept()用来接受参数s的socket连线.参数s的socket必需先经bind().listen()函数处理过,当有连线进来时 accept()

UDP编程中client和server中使用recvfrom和sendto的区别

client中:      sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&saddr,len);      recvfrom(sfd,buf,sizeof(buf),0,NULL,NULL);server中:      recvfrom(fd,buf,sizeof(buf),0,(struct sockaddr *)&caddr,&len); 将网络字节序的IP地址转换成字符串输出 // inet_ntoa : struct ip

send和sendto的区别

ttp://www.beej.us/guide/bgnet/output/html/multipage/sendman.html send()用于TCP SOCK_STREAM,sendto()用于UDP SOCK_DGRAM, send支持flags: MSG_OOB:send as "Out of Band" data.该数据包优先,可以先接受到,对端会收到SIGURG信号 MSG_DONTROUTE:不用路由,只在本地 MSG_DONTWAIT:允许让它返回EAGAIN MSG_

Exchange 发送方式(Send As)和代表发送(Send on behalf)的区别

我们都知道Exchange上可以对某个邮箱设置发送方式和代表发送.发送方式也就是我们通常所说的代理发送.下面分别介绍一下这两种方式的区别和如何设置. 一.代理方式(Send on behalf) 1.介绍 "代表发送"权限允许代理人代表此邮箱发送邮件.代理人发送的任何邮件的"发件人"行都会指示邮件是代理人代表邮箱所有者发送的.例如:设置邮箱A可用代理邮箱B发送邮件,那么当邮箱A代理邮箱B发送邮件给邮箱C时,邮箱C收到的邮件发件人显示为"邮箱A代表邮箱B&q

PHP Socket 吉林快三跨度玩法平台开发编程进阶指南

?Linux吉林快三跨度玩法平台开发[大神源码论坛]dsluntan.com [布丁源码论坛]budingbbs.com 企娥3393756370 或者 Mac 环境:?安装有 Sockets 扩展:?了解 TCP/IP 协议. socket函数只是PHP扩展的一部分,编译PHP时必须在配置中添加 --enable-sockets 配置项来启用. 如果自带的PHP没有编译scokets扩展,可以下载相同版本的源码,进入ext/sockets使用phpize编译安装. socket系列函数 soc

PHP Socket 编程进阶指南

socket函数只是PHP扩展的一部分,编译PHP时必须在配置中添加 --enable-sockets 配置项来启用. 如果自带的PHP没有编译scokets扩展,可以下载相同版本的源码,进入ext/sockets使用phpize编译安装. socket系列函数 socket服务端/客户端流程: 图中所示流程在任何编程语言里都是通用的. server端 接下来我们写一个简单的单进程TCP服务器: socket_tcp_server.php <?php /** * Created by PhpSt

Linux套接字编程

网络中的进程是如何通信的? 在网络中进程之间进行通信的时候,那么每个通信的进程必须知道它要和哪个计算机上的哪个进程通信.否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 什么是套接字? 套

网络基础--对套接字描述符的本质理解

首先了解下数据在client与server端的通信中的收发过程 考虑单向的数据流,即 即A(客户端)向B(服务端)发送数据. 在ProgramA中,定义一个数组char buf[100] = "tcp" ;那么buf就是应用程序缓冲区,即图中A对应的圆内存,send / write函数对应上面蓝色的socket API,内核缓冲区对应黄色方形部分.可知,send的作用就是把应用程序缓冲区的数据拷贝到内核缓冲区而已.内核缓冲区的数据经过网卡,历经网络传到B端的网卡(TCP协议),然后进入

套接字I/O函数write/read writev/readv send/recv sendto/recvfrom sendmsg/recvmsg

函数原型 read/write系原型 1 #include <unistd.h> 2 3 ssize_t read(int fd, void *buf, size_t count); 1 #include <unistd.h> 2 3 ssize_t write(int fd, const void *buf, size_t count); 1 #include <sys/uio.h> 2 3 ssize_t readv(int fd, const struct iov