各位大神 udp的接收发送问题我一直不太明白,服务器断定义两个变量 serveraddr clientaddr,服务器的接收就直接用clientaddr recvfrom(sockfd, buf, N, 0, (struct sockaddr *)&clientaddr, addrlen),前面定义后也没对clientaddr赋值什么的就直接接收,那recvfrom这个函数是怎么根据一个定义就确定客户端ip并接受的?
并且我看了udp写的聊天室的代码,其中有部分遍历链表 并且向链表中存在的客户端发送消息,而且链表中保存的客户端地址是clientaddr赋值过来的。链表中结构体有两个成员一个是addr,一个是指针next,而有客户端连接时就会把客户端地址存到链表的addr中, struct sockaddr_in serveraddr, clientaddr; linklist * h, h->addr = clientaddr,这就是我不懂的地方,前面定义完之后 也没赋值就直接用,保存到addr的地址是怎么获取的呢?客户端也没把自己的地址传给服务器啊,而且好多个客户端,就一个clientaddr变量,怎么代表的不同地址呢?求大神指点。
|