int getpeername(int socket, struct sockaddr *restrict address,socklen_t *restrict address_len);
socket代表在本地端代表對方的socket file descriptor
restrict是用來儲存對方的sockaddr結構的資料
address_len表示sockaddr的長度
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *addr);
把字串形式的ip轉換成網路network address
struct hostent *gethostbyname(const char *name);
struct hostent {
char FAR* h_name;
char FAR* FAR* h_aliases;
short h_addrtype;
short h_length;
char FAR* FAR* h_addr_list;
};
name="tw.yahoo.com"把它轉換成struct hostent裡面有ip的相關資料
ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags, struct sockaddr *restrict address, socklen_t *restrict address_len);
有限定資料一定是由address傳送過來的
#include <sys/socket.h>
int getsockname(int socket, struct sockaddr *address, socklen_t *address_len);
如果我們不在呼本地端ip及port 號,可以將本地的op位址填入 INADDR_ANY ,port number 填入 0 ,socket 會自動使用任何一個可以使用的位址,並且填入一個1024~5000的值。
如何得知 socket 幫我們設定的 IP and PORT號~~~~可使用 getsockname()。
參考資料:
UNIX on Windows, Windows X Server, UNIX Porting - Terminal Emulation Software
沒有留言:
張貼留言