一个类型声明
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(ip)); //将ip地址从网络...
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的区别是,结...
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_in clientaddr, serveraddr; listenfd = socket(AF_INET, SOCK_STREAM, 0);//生成socket文件描述符 setnonblocking(listenfd);//把socket设置为非阻塞方式 epfd=epoll_create(256);//生成用于处理accept的epoll专用的文件描述符 ev.data.fd=listenfd;//设置与要处理的事件相关的文件描述符 ...
(struct sockaddr *)(&server_addr)这个是一个强制类型转换,就是将结构体&server_addr强制转换成struct sockaddr *类型。这个是c语言范畴的东西。因为我们只能创建和填充sockaddr_in和sockaddr_in6的结构体和里面的字段,但是很多socket参数只接受sockaddr类型的结构体,所以在这里要强制转换一下,就我记得...
struct sockaddr_in是已经声明了的结构名,这里当作类型名来使用,如基础类型名int,double等等,addr被声明为struct sockaddr_in类型的变量,就像int a;中的a一样。
struct sockaddr_in clientaddr, serveraddr; listenfd = socket(AF_INET, SOCK_STREAM, 0);//生成socket文件描述符 setnonblocking(listenfd);//把socket设置为非阻塞方式 epfd=epoll_create(256);//生成用于处理accept的epoll专用的文件描述符 ev.data.fd=listenfd;//设置与要处理的事件相关的文件描述符 ...
sockaddr是一个结构类型,它可以用来保存IP地址家族、IP地址和端口,这些合在一起称为“套接地址”。一个套接地址是保存在一个结构变量中的,它不是一个指针类型。my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针。
SOCKADDR_IN sockAddr; memset(&sockAddr,0,sizeof(sockAddr)); char lpszAscii[MAX_PATH]; memset(lpszAscii,0,MAX_PATH); //得到机器名 if(gethostname(lpszAscii,MAX_PATH)!=0) { DWORD nError=GetLastError(); return; } m_strComputerName ...