关于SOCKET的IP,端口,以及绑定
问题:
1.是否每个SOCKET 都需要有IP 以及PORT 属性才能执行文件传输操作?
2.为什么有的SOCKET 需要绑定,有的不需要?
用TCP协议,面向连接,服务器端监听的SOCKET 需要绑定IP PORT ,而客户端无需绑定,请问客户端的端口号是多少?, 服务器怎么知道客户端的端口号
而UDP协议,无连接,接收端需要bind() ,发送端反而不需要bind(),那么,发送端的PORT是什么?
[解决办法]
1.是否每个SOCKET 都需要有IP 以及PORT 属性才能执行文件传输操作?
套接字最基础的,需要有IP和PORT,要不它往哪里发,从哪个接受呢
2.为什么有的SOCKET 需要绑定,有的不需要?
不是不需要,而是系统默认指定了
TCP协议,面向连接,服务器端监听的SOCKET 需要绑定IP PORT ,而客户端无需绑定,请问客户端的端口号是多少?, 服务器怎么知道客户端的端口号
客户端被默认指定了,当然你可以直接bind IP和PORT,服务器接收函数recv或者recvfrom或者其他WSARecv等等,他们都有一个参数SOCKADDR_IN结构体,里面保存了发送端的IP和PORT信息等。
[解决办法]
而UDP协议,无连接,接收端需要bind() ,发送端反而不需要bind(),那么,发送端的PORT是什么?
可以通过函数getsockname()得到bind的PORT
[解决办法]
1,IP和port不算是属性,相当于参数
2,绑定只是因为你需要一个端口号来使用,否则将会是一个自动端口号
[解决办法]
领教了,多多学习