SendTo

王朝百科·作者佚名  2010-02-12  
宽屏版  字体: |||超大  

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++]

public: int SendTo(

unsigned char buffer __gc[],

int size,

SocketFlags socketFlags,

EndPoint* remoteEP

);

[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 ( int 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 <netinet.in.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){

bezro(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()

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有