电脑: 两台用网线之间连接的电脑。设置ip在同一局域网。
无所谓客户端 服务器端。
电脑A 168.192.1.2
电脑B 168.192.1.3
现在要做的工作是电脑A 传输文件给电脑B
一般在udp协议中先客户端提出请求要发送文件给服务器端。
所以我们就把 电脑A成为 客户端 电脑B称为 服务器端
如果B 要给 A 传输文件,那么就是 A是服务器 B是客户端
所以服务器电脑就是普通电脑不是要固定的服务器电脑。是跟你传输文件有关系。
A 给 B发送文件。使用的是sendto()
A在设置sockaddr_in中的ip地址参数的时候,将
stServerAddr.sin_addr.s_addr = inet_addr("192.168.1.3")设置为B的ip
注意 inet_addr在vs2015中编译不通过,
解决方案是添加头文件
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
B接收方
在设置sockaddr_in中的ip地址参数的时候,设置自己的ip即可。
在recvfrom()函数中要使用的是ServerAddr,也就是说A的地址,这里你需要自己声明一个sockaddr_in 不需要初始化。
recvfrom最后一个参数是结构体sizeof(sockaddr_in)
现在有两个问题思考?
1 为什么接收端需要进行bind(),发送端不需要?
2 发送端设置的的sockaddr_in中的内容是不是都是接收端的呢,因为ip填的接收端?
3发送端的socket设置的到底是与接收端进行绑定的,还是发送端,问题2解决了问题3 就有答案了。