一个类型声明
if (signo == SIGINT) { printf("server close\n"); close(sockfd); exit(1); } } /*输出连接上来的客户端的相关信息*/ void out_addr(struct sockaddr_in *clientaddr) { //将端口从网络字节序转换成主机字节序 int port = ntohs(clientaddr->sin_port); char ip[16]; memset(ip, 0, sizeof...
bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)); 二、inet_addr、 inet_aton、inet_ntoa inet_addr: 将网络地址转为网络二进制数字,返回的IP地址是网络序的。函数原型: unsigned long in inet_addr(const char *cp) inet_aton:将网络地址转为网络二进制数字,与inet_addr的区别是,结...
(struct sockaddr *)(&server_addr)这个是一个强制类型转换,就是将结构体&server_addr强制转换成struct sockaddr *类型。这个是c语言范畴的东西。因为我们只能创建和填充sockaddr_in和sockaddr_in6的结构体和里面的字段,但是很多socket参数只接受sockaddr类型的结构体,所以在这里要强制转换一下,就我记得...
一、结构体 struct sockaddr_in, struct sockaddr, struct in_addr struct sockaddr_in, struct sockaddr,struct in_addr,这是网络编程中常用的结构体,每次都记不住它们各自的成员是啥,需要临时查,为方便以后的查看,在这里总结下。 struct sockaddr {
server_addr.sin_addr.s_addr = inet_addr("172.16.32.36");
struct sockaddr_in是已经声明了的结构名,这里当作类型名来使用,如基础类型名int,double等等,addr被声明为struct sockaddr_in类型的变量,就像int a;中的a一样。
mysock.sin_addr.s_addr=inet_addr("192.168.0.1"); …… 等到要做转换的时候用: (struct sockaddr*)mysock 使用的例子 1#defineSERVER_PORT 80802intsockfd,err,newfd;3structsockaddr_in addr;4sockfd = socket(AF_INET, SOCK_STREAM,0);5if(sockfd <0){6perror("socket creation failed!\n");7retu...
proxyaddr1.sin_family = AF_INET; proxyaddr1.sin_port = htons(echoport1); proxyaddr1.sin_addr.s_addr = inet_addr("127.0.0.1"); bzero(&proxyaddr2, sizeof(struct sockaddr_in)); proxyaddr2.sin_family = AF_INET; proxyaddr2.sin_port = htons(echoport2); ...
sockaddr是一个结构类型,它可以用来保存IP地址家族、IP地址和端口,这些合在一起称为“套接地址”。一个套接地址是保存在一个结构变量中的,它不是一个指针类型。my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针。