>凡事网 导航

在C语言中send buff的用法? C语言中的buff是什么?eg:char buff[BUFF...

2024-06-26m.fan-pin.com
C语言中SOCKET关于send和recv的问题,不懂别乱贴~

说实在的这个问题非常简单,不过你习惯太差,你把send和recv的返回值看看不就明白了!
前提是你描述的都是事实。
否则还可能有Socket问题。
如果是linux,strace一下就知道什么问题了。
Windows的也很简单。

前面的明显不正确,send如果是TCP,(UDP 不应该用send),send返回时,消息已经发出了。

buff是数组名字,中文解释是缓冲区,一般程序员习惯用buff在存放字符串。

C语言中的标准库中是没有Send函数的。

从名称来看应该是自定义的函数。具体实现的功能、参数及调用的要求,需要在阅读函数之后才能得到结论。
当然如果是C++的话,在Tcp中是具备Send函数的。具体见下:
send()用于向一个已经连接的socket发送数据,如果无错误,返回值为所发送数据的总数,否则返回SOCKET_ERROR。
简述
向一个已连接的 套接口发送数据。
#include < winsock.h>
int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int flags);
s:一个用于标识已连接套接口的描述字。
buf:包含待发送数据的 缓冲区。
len:缓冲区中数据的长度。
flags:调用执行方式。
注释
send()适用于已连接的数据包或流式 套接口发送数据。对于数据报类套接口,必需注意发送数据长度不应超过 通讯子网的IP包最大长度。IP包最大长度在 WSAStartup()调用返回的WSAData的iMaxUdpDg元素中。如果数据太长无法自动通过下层协议,则返回WSAEMSGSIZE错误,数据不会被发送。
请注意成功地完成send()调用并不意味着 数据传送到达。
如果传送系统的 缓冲区空间不够保存需传送的数据,除非套接口处于非阻塞I/O方式,否则send()将阻塞。对于非阻塞SOCK_STREAM类型的套接口,实际写的数据数目可能在1到所需大小之间,其值取决于本地和远端主机的 缓冲区大小。可用 select()调用来确定何时能够进一步发送数据。
在相关套接口的选项之上,还可通过标志位flag来影响函数的执行方式。也就是说,本函数的语义既取决于套接口的选项也取决于标志位。后者由以下一些值组成:
值意义
MSG_DONTROUTE 指明数据不选径。一个WINDOWS套接口供应商可以忽略此标志;MSG_OOB 发送带外数据(仅适用于SO_STREAM;)。
返回值
若无错误发生,send()返回所发送数据的总数(请注意这个数字可能小于len中所规定的大小)。否则的话,返回SOCKET_ERROR错误, 应用程序可通过WSAGetLastError()获取相应 错误代码。
错误代码:
WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
WSAENETDOWN:WINDOWS 套接口实现检测到网络子系统失效。
WSAEACESS:要求地址为广播地址,但相关标志未能正确设置。
WSAEINTR:通过一个 WSACancelBlockingCall()来取消一个(阻塞的)调用。
WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
WSAEFAULT:buf参数不在用户 地址空间中的有效位置。
WSAENETRESET:由于WINDOWS套接口实现放弃了连接,故该连接必需被复位。
WSAENOBUFS:WINDOWS套接口实现报告一个 缓冲区 死锁。
WSAENOTCONN:套接口未被连接。
WSAENOTSOCK:描述字不是一个套接口。
WSAEOPNOTSUPP:已设置了MSG_OOB,但套接口非SOCK_STREAM类型。
WSAESHUTDOWN:套接口已被关闭。一个套接口以1或2的how参数调用 shutdown()关闭后,无法再用send()函数。
WSAEWOULDBLOCK:
WSAEMSGSIZE:套接口为 SOCK_DGRAM类型,且数据报大于WINDOWS套接口实现所支持的最大值。
WSAEINVAL:套接口未用 bind()捆绑。
WSAECONNABORTED:由于超时或其他原因引起虚电路的中断。
WSAECONNRESET:虚电路被远端复位。

buff是数组名字,中文解释是缓冲区,一般程序员习惯用buff在存放字符串。

这个用法呢,最重要的就是要结合整体来运用一些插入的比较难以使用的方式

一般我们可以用按键盘上面的F12通过这个鼠标,然后点击保存自己编辑的这个数据点保存之后就可以直接使用了,这个是最简单的方法之一。

在C语言中C D布洛芬用法应该是用不住啊,有事乐尔自助行业的嗯,这个行业的非常完美的待一待熏死。

C语言与网络问题 高手进
memcpy(SendBuf+sizeof(psd_header),&tcp_header,sizeof(tcp_header));tcp_header.th_sum=checksum((USHORT *)SendBuf,sizeof(psd_header)+sizeof(tcp_header));\/\/计算IP校验和memcpy(SendBuf,&ip_header,sizeof(ip_header));memcpy(SendBuf+sizeof(ip_header),&tcp_header,sizeof(tcp_header));memset...

buf单元是什么意思?
buf单元是编程中常用的一个术语。它通常指的是一个数据缓冲区,并且在程序中起着十分重要的作用。在C语言中,buf单元是一个字符数组或字节数组,用于在读写过程中存储临时数据。buf单元的大小可以自定义,但是一般来说,会根据实际情况选择一个合理的大小。buf单元在计算机程序中的应用非常广泛,几乎涵盖...

DES加密算法C语言实现
fseek(readfile,-16,SEEK_END);\/*最后16个字节的表示文件长度的空间*\/ filelen = fread( sendbuf, sizeof( INT8 ), 16, readfile ); encodehex( readbuf,sendbuf,8); switch(flag) { case DESONE: Ddes( readbuf,key,8); break; case DESTHREE: Ddes3( readbuf, key ,keynum,8); brea...

c语言setbuf函数怎么用啊
你的程序流程是这样的:① while((c=getchar()) != EOF) putchar(c);这个是一个循环,会要求你不停输入,直到你键入ctr-z(Windows上,如果是xNix则是Ctr-D),这个循环才会终止;② 上面的循环终止后,你最后一次输入的字符,才会被输出到stdout(这里即是屏幕)上面。因此如果你希望每键入一...

PIC单片机UART转RS485的c语言编程
这个没有现成的程序给你 因为涉及到初始化 是否使用中断 数据包格式等问题 下面是一段我做的产品的uart中断发送程序 用的PIC16F 记得在处理过程中改变SN65HVD12D的收发状态 if(TXIE&&TXIF) \/\/USART发送中断 { CLRWDT(); \/\/喂狗 send_order++;\/\/if((send_order<=(send_buf[4]+4))&&(send...

这个c语言的赋值语句是什么错误?
char Send_buf[buffer_size];char RcvGetIndex; \/\/指向当前最后读取的数据位,下次读取时先步进一位.char RcvPutIndex; \/\/指向当前最后写入的数据位,下次写入时先步进一位.char SendGetIndex;char SendPutIndex;int bOverFLow;int bEnableTskTxd;int TxdCnt;} UART_BUFFER...

有谁知道c语言这个语句什么意思?scanf(buf, “%*[^=]=%x”, &a); b...
这是使用sscanf从一个字符串中读进与指定格式相符的数据。这里的[^=]表示buf中到'='之前的字符串,%*[^=]意思是吸收掉到=之前的这些字符,或者说忽略掉。然后=%x中=是匹配之前buf中的=,然后%x是buf中=之后的字符,把它们作为%x形式的数据读到a中去。比如buf是abc=1那么%*[^=]就是忽略掉...

C语言socket编程实现网络数据传输
仅供参考 \/\/ serverTCP.cpp : 定义控制台应用程序的入口点。\/\/ include "stdafx.h"using namespace std;long long cnt = 0;void transFile(SOCKET s){ printf("新子服务%d...",cnt);send(s,"welcome to TCP FILE SERVER !",strlen("welcome to TCP FILE SERVER !")+1,0);char Buf[BUF...

...单片机将字符串逆序发送回计算机,用C语言编程
void Send(uint8 c){ SBUF = c;while(!TI);TI = 0;} void main(void){ char j;InitUART();while(1){ if(flag) \/\/是否接收到回车 字符串发送完 { flag = 0;for(j = ct ; j > 0 ; j--){ Send(buf[j-1]);} } } } void UARTInterrupt(void) interrupt 4 { static...

linux 下C语言的syn扫描代码
\/\/发送数据包的函数 int send_packet() { SOCKET sendSocket; BOOL flag; int timeout; SOCKADDR_IN sin; IP_HEADER ipHeader; TCP_HEADER tcpHeader; PSD_HEADER psdHeader; char szSendBuf[60] = ; int ret; unsigned long source_ip; unsigned long target_ip; \/\/建立原生数据...

相关链接2

返回顶部
凡事房车自主流
凡事网