udp sockaddr_in结构体中ip地址填写(服务器端和客户端)

电脑: 两台用网线之间连接的电脑。设置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 就有答案了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值