0

私はソケットプログラムが初めてでした。関数を学習する場合sendto、プロトタイプとして:

ssize_t sendto(int socket, const void *message, size_t length,
                int flags, const struct sockaddr *dest_addr,
                socklen_t dest_len);

dest_addr「メッセージ」にターゲットIPが含まれており、引数にもターゲットIPアドレスが指定されていることがわかりました。dest_addr引数の他の使用法はありますか?

4

3 に答える 3

3

いいえ、メッセージには送信する内容が含まれています。以下に例を示します。

int spatula_count = 3490;
char *secret_message = "The Cheese is in The Toaster";

int stream_socket, dgram_socket;
struct sockaddr_in dest;
int temp;

// first with TCP stream sockets:

// assume sockets are made and connected
//stream_socket = socket(...
//connect(stream_socket, ...

// convert to network byte order
temp = htonl(spatula_count);
// send data normally:
send(stream_socket, &temp, sizeof temp, 0);

// send secret message out of band:
send(stream_socket, secret_message, strlen(secret_message)+1, MSG_OOB);

// now with UDP datagram sockets:
//getaddrinfo(...
//dest = ...  // assume "dest" holds the address of the destination
//dgram_socket = socket(...

// send secret message normally:
sendto(dgram_socket, secret_message, strlen(secret_message)+1, 0, 
       (struct sockaddr*)&dest, sizeof dest);
于 2013-05-30T09:07:23.823 に答える
0

メッセージには宛先アドレスは含まれず、ペイロード バイトのみが含まれます

生のソケットを使用していない限り...そして、ソケットプログラミングに慣れていない場合は、それを行うべきではありません。

于 2013-05-30T09:06:50.893 に答える