词条 | SendTo |
释义 | Socket.SendTo 方法(Byte[], Int32, SocketFlags, EndPoint) 使用指定的 SocketFlags,将指定字节数的数据发送到指定的终结点。 Visual BasicOverloads Public Function SendTo( _ ByVal buffer() As Byte, _ByVal size As Integer, _ ByVal socketFlags As SocketFlags, _ ByVal remoteEP As EndPoint _ ) As Integer C#public int SendTo( byte[] buffer, int size, SocketFlags socketFlags, EndPoint remoteEP ); C++系统声明:int PASCAL FAR sendto ( IN SOCKET s, IN const char FAR * buf, IN int len, IN int flags, IN const struct sockaddr FAR *to, IN int tolen); 个人声明:typedef int (_stdcall * SendTo) (SOCKET sSocket, const char * lpBuffer, DWORD dwLength, int dwFlags, const sockaddr_in * sinTo, int dwToLength); 或: typedef int (_stdcall * SendTo) (SOCKET sSocket, const char * lpBuffer, DWORD dwLength, int dwFlags, const sockaddr * sinTo, int dwToLength); 返回值:实际发送数据的长度。 系统解释:s 套接字 buff 待发送数据的缓冲区 size 缓冲区长度 Flags 调用方式标志位, 一般为0, 改变Flags,将会改变Sendto发送的形式 addr (可选)指针,指向目的套接字的地址 len addr所指地址的长度 JScriptpublic function SendTo( buffer : Byte[], size : int, socketFlags : SocketFlags, remoteEP : EndPoint ) : int; 参数buffer Byte 类型的数组,它包含要发送的数据。 size 要发送的字节数。 socketFlags SocketFlags 值的按位组合。 remoteEP EndPoint,表示数据的目标位置。 返回值 已发送的字节数。 Linux C函数sendto(经socket传送数据) 相关函数send , sendmsg,recv , recvfrom , socket 表头文件#include < sys/types.h > #include < sys/socket.h > 定义函数int sendto ( socket s , const void * msg, int len, unsigned int flags, const struct sockaddr * to , int tolen ) ; 函数说明sendto() 用来将数据由指定的socket传给对方主机。参数s为已建好连线的socket,如果利用UDP协议则不需经过连线操作。参数msg指向欲连线的数据内容,参数flags 一般设0,详细描述请参考send()。参数to用来指定欲传送的网络地址,结构sockaddr请参考bind()。参数tolen为sockaddr的结果长度。 返回值成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中。 错误代码EBADF 参数s非法的socket处理代码。 EFAULT 参数中有一指针指向无法存取的内存空间。 WNOTSOCK 参数 s为一文件描述词,非socket。 EINTR 被信号所中断。 EAGAIN 此动作会令进程阻断,但参数s的socket为不可阻断的。 ENOBUFS 系统的缓冲内存不足。 EINVAL 传给系统调用的参数不正确。 范例#include < sys/types.h > #include < sys/socket.h > #include <arpa.inet.h> #define PORT 2345 /*使用的port*/ main(){ int sockfd,len; struct sockaddr_in addr; char buffer[256]; /*建立socket*/ if(sockfd=socket (AF_INET,SOCK_DGRAM,0))<0){ perror (“socket”); exit(1); } /*填写sockaddr_in 结构*/ bzero ( &addr, sizeof(addr) ); addr.sin_family=AF_INET; addr.sin_port=htons(PORT); addr.sin_addr=hton1(INADDR_ANY) ; if (bind(sockfd, &addr, sizeof(addr))<0){ perror(“connect”); exit(1); } while(1){ bzero(buffer,sizeof(buffer)); len = recvfrom(socket,buffer,sizeof(buffer), 0 , &addr &addr_len); /*显示client端的网络地址*/ printf(“receive from %s\ “ , inet_ntoa( addr.sin_addr)); /*将字串返回给client端*/ sendto(sockfd,buffer,len,0,&addr,addr_len);” } } 执行 请参考recvfrom() |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。