getsockname與getpeername

getsockname與getpeername是返回套接口關聯的本地協議地址和遠程協議地址。

int getsockname(int sockfd, struct sockaddr * localaddr, socken_t * addrlen);

int getpeername(int sockfd, struct sockaddr * peeraddr, socken_t * addrlen);

返回0表示成功,返回1表示出錯

參數sockfd表示你要獲取的套接口的描述字。

localaddr返回本地協議地址描述結構, peeraddr返回遠程協議地址描述結構,addrlen分別是上述2個結構的長度。這個2個函數不難,下面是使用樣例

#include "/programe/net/head.h"
#include "stdio.h"
#include "stdlib.h"

int main(int argc, char ** argu) {
int listenfd;
struct sockaddr_in servaddr;
pid_t pid;
char temp[100];
int n = 0;

listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(atoi(argu[1]));
bind(listenfd, (struct socket_addr *)&servaddr, sizeof(servaddr));
listen(listenfd, n);
for(;;) {
struct sockaddr_in local;
int connfd = accept(listenfd, (struct sockaddr *)NULL, NULL);
if((pid = fork()) == 0) {
struct sockaddr_in serv, guest;
char serv_ip[20];
char guest_ip[20];
int serv_len = sizeof(serv);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章