複製鏈接
請複製以下鏈接發送給好友

SendTo

鎖定
SendTo是一個計算機函數,指向一指定目的地發送數據,SendTo適用於發送未建立連接的UDP數據包 (參數為SOCK_DGRAM)。
中文名
SendTo
適用於
發送未建立連接的UDP數據報
參數為
SOCK_DGRAM
向一指定目的地發送數據

SendTo基本介紹

Socket(Byte, Int32, SocketFlags, EndPoint)
使用指定的 SocketFlags,將指定字節數的數據發送到指定的終結點
SendTo SendTo

SendToVisual Basic

Overloads Public Function SendTo(
  _ByVal buffer() As Byte,
  _ByVal size As Integer,
  _ByVal socketFlags As SocketFlags,
  _ByVal remoteEP As EndPoint,
)

SendToC#

public int SendTo(
  byte[] buffer,
  int size,
  SocketFlags socketFlags,
  EndPoint remoteEP
);

SendToC++

系統聲明
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
);
參數説明
s
buff
待發送數據的緩衝區
size
緩衝區長度
Flags
調用方式標誌位, 一般為0, 改變Flags,將會改變Sendto發送的形式
addr
(可選)指針,指向目的套接字的地址
len_addr
所指地址的長度
返回值
整型。如果成功,則返回發送的字節數,失敗則返回SOCKET_ERROR。

SendToJScript

public function SendTo(
  buffer : Byte[],
  size : int,
  socketFlags : SocketFlags,
  remoteEP : EndPoint
) : int;
參數説明
buffer
Byte 類型的數組,它包含要發送的數據。
size
要發送的字節數。
socketFlags
SocketFlags 值的按位組合。
remoteEP
EndPoint,表示數據的目標位置。
返回值
已發送的字節數。

SendToLinux 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 傳給系統調用的參數不正確。
範例
/*server.c*/
#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;
    int addr_len=sizeof(struct sockaddr_in);
	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);
    }
}
client.c範例請參考recvfrom