SendTo

SendTo

SendTo是一個計算機函式,指向一指定目的地傳送數據,sendto()適用於傳送未建立連線的UDP數據包 (參數為SOCK_DGRAM)。

基本介紹

Socket

(Byte[], Int32, SocketFlags, EndPoint)

使用指定的 SocketFlags,將指定位元組數的數據傳送到指定的終結點。

Visual Basic

Overloads Public Function SendTo( _

SendTo 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 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);

返回值

為整型,如果成功,則返回傳送的位元組數,失敗則返回SOCKET_ERROR。

系統解釋

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 參數中有一指針指向無法存取的記憶體空間。

ENOTSOCK 參數 s為一檔案描述詞,非socket。

EINTR 被信號所中斷。

EAGAIN 此動作會令進程阻斷,但參數s的socket為不可阻斷的。

ENOBUFS 系統的緩衝記憶體不足。

EINVAL 傳給系統調用的參數不正確。

範例

#include<string.h> //bzero頭檔案

#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.s_addr=hton1(INADDR_ANY) ;

if (bind(sockfd, (struct addr*)&addr, sizeof(addr))<0){

perror(“connect”);

exit(1);

}

while(1){

bzero(buffer,sizeof(buffer));

len = recvfrom(socket,buffer,sizeof(buffer), 0 , (struct addr*)&addr ,&addr_len);

/*顯示client端的網路地址*/

printf(“receive from %s\n “ , inet_ntoa( addr.sin_addr));

/*將字串返回給client端*/

sendto(sockfd,buffer,len,0,(struct sockaddr*)&addr,addr_len);”

}

}

執行 請參考recvfrom()

相關詞條

相關搜尋

熱門詞條

聯絡我們