现在的位置: 首页 > 综合 > 正文

getsockname与getpeername

2013年10月06日 ⁄ 综合 ⁄ 共 914字 ⁄ 字号 评论关闭

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);

抱歉!评论已关闭.