2020年12月22日 星期二

常用的網路處理函數

inet_aton()函數

功能:inet_aton()函數用於將小數點分隔的十進制IP地址轉換成一串數字序列格式的IP地址;

原型:int inet_aton(const char *string, struct in_addr *addr);

返回值:如果這個函數成功,函數的返回值非零,如果輸入地址不正確則會返回零;

頭文件:sys/socket.h (Linux)

inet_ntoa()函數

功能inet_ntoa()函數用於將一串數字序列格式的IP地址轉化成小數點分隔的十進制IP地址;

原型:char *inet_ntoa (struct in_addr);

返回值:若無錯誤發生,inet_ntoa()返回一個字符指針。否則的話,返回NULL。其中的數據應在下一個WINDOWS套接口調用前複製出來;

頭文件:arpa/inet.h (Linux)

sendto和recvfrom

頭文件

#include <sys/types.h>

#include <sys/socket.h>

函數原型

int sendto (int s, const void *buf, int len, unsigned int flags, const struct sockaddr *to, int tolen);

int recvfrom(int s, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);

函數說明

sendto(),是把UDP數據報發給指定地址;recvfrom()是從指定地址接收UDP數據報。

參數說明

s: socket描述符。

buf: UDP數據報緩存地址。

len: UDP數據報長度。

flags: 該參數一般為0。

to: sendto()函數參數,struct sockaddr_in類型,指明UDP數據發往哪里報。

tolen: 對方地址長度,一般為:sizeof(struct sockaddr_in)。

fromlen:recvfrom()函數參數,struct sockaddr_in類型,指明從哪裡接收UDP數據報。

函數返回值

對於sendto()函數,成功則返回實際傳送出去的字符數,失敗返回-1,錯誤原因存於errno 中。

對於recvfrom()函數,成功則返回接收到的字符數,失敗則返回-1,錯誤原因存於errno中。

沒有留言:

張貼留言