请输入您要查询的百科知识:

 

词条 SendTo
释义

Socket.SendTo 方法

(Byte[], Int32, SocketFlags, EndPoint)

使用指定的 SocketFlags,将指定字节数的数据发送到指定的终结点。

Visual Basic

Overloads 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所指地址的长度

JScript

public 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 12:06:23