sendto发送数据前是否必须指定目的主机的端口?该如何解决

sendto发送数据前是否必须指定目的主机的端口?
在ping测试的例子代码中,我发现sendto发送数据前只是指定主机地址,并没有指定主机的端口;而在其他例子中也有指定端口的,请问这是否必需?是否和socket的类型以及所用到的协议有关?

------解决方案--------------------
tcp和udp通讯都需要端口
------解决方案--------------------
协议不同。