dest_addr.sin_port = htons(DEST_PORT);
dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
sockfd 是系统调用 socket() 返回的套接口文件描述符。serv_addr 是保存着目的地端口和 IP 地址的数据结构
client端还没有确定服务器的地址端口,怎么来确定serv_addr呢
dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
sockfd 是系统调用 socket() 返回的套接口文件描述符。serv_addr 是保存着目的地端口和 IP 地址的数据结构
client端还没有确定服务器的地址端口,怎么来确定serv_addr呢
inetAddr.sin_addr.s_addr=htonl(INADDR_ANY);
inetAddr.sin_family=AF_INET;
inetAddr.sin_port=htons(SERVER_PORT);if(bind(sListen,(SOCKADDR*)&inetAddr,sizeof(inetAddr)) ==SOCKET_ERROR){}sAccept=accept(sListen,(SOCKADDR*)&inetAddr,&sockLen)既然inetAddr.sin_port=htons(SERVER_PORT);绑定的是服务器的端口, 那accept函数说明时说
第二个参数是保存客户端的ip地址和端口? 我感觉怎么矛盾啊 怎么理解呢?
第二个参数serv_addr就是服务器的ip地址和端口号,也就是上面的目标地址变量dest_addr
该函数在客户端使用if(bind(sListen,(SOCKADDR*)&inetAddr,sizeof(inetAddr)) ==SOCKET_ERROR){}
sAccept=accept(sListen,(SOCKADDR*)&inetAddr,&sockLen)
这两个函数是在服务器端使用的,accept的第二个参数是一个【out】的参数,也就是调用时不用给具体的值,在该函数结束返回时,这个变量里会填写客户端的地址和端口,这个函数与connect函数相对应