send函数实例c语言,c语言sendto函数

用C语言编一个聊天工具是,关于send函数和recv函数

这属于服务器客户端模式的网络数据包对话

创新互联成立于2013年,我们提供高端网站建设公司成都网站制作网站设计、网站定制、成都全网营销推广成都小程序开发、微信公众号开发、seo优化排名服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都地磅秤企业提供源源不断的流量和订单咨询。

你在现假设你是客户端,那么你需要改服务器端程序 的send函数里面数据固定为10111213

c语言。sendbyte()函数

语法上看:

P2=0xC0;//p2 与等于 0xc0,相当 P2 = P20XC0,

sendbyte(data1);//把data1变量作为参数传给函数sendbyte,看函数名,似乎是要发送数据的样子

P2|=0x01;//这句 相当于 P2 = P2|0X01,作用是将P2的最低位值1

send的windows C 函数

简述

向一个已连接的套接口发送数据。

#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:虚电路被远端复位。

参见:

recv(), recvfrom(), socket(), sendto(), WSAStartup()

C语言 send()函数理解

使用函数getsockopt获得发送缓冲区的长度。用法如下:

int sockfd;

int val;

int len;

sockfd = socket (AF_INET, SOCK_STREAM, 0);

len = sizeof (val);

getsockopt( sockfd, SOL_SOCKET, SO_SNDBUF, val, len);

printf ("sndbuf len=%d\n", val);

在32位linux系统上发送缓冲区为16K ,可以使用setsockopt()修改,会影响网络性能

send的Linux C 函数

经套接字传送消息

相关函数

sendto,sendmsg,recv,recvfrom,recvmsg,socket

表头文件

#include sys/socket.h

定义函数

ssize_t send (int s,const void *msg,size_t len,int flags);

参数说明

第一个参数指定发送端套接字描述符;

第二个参数指明一个存放应用程式要发送数据的缓冲区;

第三个参数指明实际要发送的数据的字符数;

第四个参数一般置0。

函数说明

send() 用来将数据由指定的 socket 传给对方主机。使用 send 时套接字必须已经连接。send 不包含传送失败的提示信息,如果检测到本地错误将返回-1。因此,如果send 成功返回,并不必然表示连接另一端的进程接收数据。所保证的仅是当send 成功返回时,数据已经无错误地发送到网络上。

对于支持为报文设限的协议,如果单个报文超过协议所支持的最大尺寸,send 失败并将 errno 设为 EMSGSIZE ;对于字节流协议,send 会阻塞直到整个数据被传输。

flags 参数有如下的选择:

MSG_DONTROUTE 勿将数据路由出本地网络

MSG_DONTWAIT 允许非阻塞操作(等价于使用O_NONBLOCK)

MSG_EOR 如果协议支持,此为记录结束

MSG_OOB 如果协议支持,发送带外数据

MSG_NOSIGNAL 禁止向系统发送异常信息

返回值

成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中。

错误代码

EBADF 参数 s 非法的 socket 处理代码。

EFAULT 参数中有一指针指向无法存取的内存空间。

WNOTSOCK 参数 s 为一文件描述词,非 socket。

EINTR 被信号所中断。

EAGAIN 此动作会令进程阻断,但参数 s 的 socket 为不可阻断的。

ENOBUFS 系统的缓冲内存不足。

EINVAL 传给系统调用的参数不正确。

求一个简单的C语言调用SendMessage 实例

WM_SETTEXT Message

--------------------------------------------------------------------------------

An application sends a WM_SETTEXT message to set the text of a window.

Syntax

To send this message, call the SendMessage function as follows.

lResult = SendMessage( // returns LRESULT in lResult

(HWND) hWndControl, // handle to destination control

(UINT) WM_SETTEXT, // message ID

(WPARAM) wParam, // = (WPARAM) () wParam;

(LPARAM) lParam // = (LPARAM) () lParam;

);

Parameters

wParam

This parameter is not used.

lParam

Pointer to a null-terminated string that is the window text.

你需要获得打开的txt程序的hwnd,还有文本框的句柄,

这一步需要用到FindWindow函数

这个你可以使用vc里面带的spy++辅助看一下

然后再调用SendMessage函数

具体参数如上面的鸟语描述,wParam没用,后面的lParam 就是一个字符串指针


当前标题:send函数实例c语言,c语言sendto函数
路径分享:http://scyanting.com/article/hcdehc.html