博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket 通讯 端口绑定 问题 解答
阅读量:5846 次
发布时间:2019-06-18

本文共 1367 字,大约阅读时间需要 4 分钟。

如果想深入弄懂它的原理:建议阅读《UNIX网络编程》

socket,我们一般指的是长连接,但是原来还有短连接,正确的解释是:

1. 如果是短链接,使用同步socket。例如http服务器、转接服务器等等。

2. 如果是长链接,使用异步socket。例如通讯系统(QQ / Fetion)、webgame等。

 

介绍一下我的环境搭建:

1.一台手机,iphone手机,用来做客户端

2.一个模拟器,在Mac电脑端,iphone模拟器,用来做服务端

3.手机和模拟器都在同一个网段;

 

成功运行效果:

成功情况第一种设计:

1.客户端的IP设置为服务器的IP,端口设置的是服务器那边设置的绑定端口;

2.服务端IP设置为电脑Mac的真实IP内网地址+绑定的端口,端口由服务器自己设定;

成功情况第二种设计:

1.客户端的IP设置为服务器的IP,端口设置的是服务器那边设置的绑定端口;

2.服务端IP设置为接收所有的IP(设置的方法参考下面的代码)+绑定的端口,端口由服务器自己设定;

 

1.问:客户端和服务端什么时候需要绑定端口和IP,

2.问:客户端绑定端口的作用是什么?绑定IP的作用是什么?

3.问:服务端绑定端口的作用是什么?绑定IP的作用是什么?

  • 服务器绑定端口,是为了在这个端口提供服务;这么说的话,就是服务端会有很多不同的端口,提供不同的服务,所以必须绑定端口;
  • 服务器绑定IP,绑定服务器IP的目的是限制了服务端进程创建的socket只接受那些目的地为此IP地址的客户连接;限制了,就是说如果客户端的目的IP不是服务器,就无法和服务器通信;
  • 如果不想限制,做法是参考下面代码:
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

1.UDP连接用到的连接语法是:

sendto(),是把UDP数据报发给指定地址;struct sockaddr_in类型,指明UDP数据发往哪里报。

recvfrom(),是从指定地址接收UDP数据报。struct sockaddr_in类型,指明从哪里接收UDP数据报。

 

 

 

 

 

参考网友的环境搭建:不同的地方在于:

  一般网上说的都是同一个应用,如果是这样,服务端和客户端IP和端口的设置解释应该是:

  因为服务器是时时在监听有没有客户端的连接,如果服务器不绑定IP和端口的话,客户端上线的时候怎么连到服务器呢,所以服务器要绑定IP和端口,而客户端 就不需要了,客户端上线是主动向服务器发出请求的,因为服务器已经绑定了IP和端口,所以客户端上线的就向这个IP和端口发出请求,这时因为客户开始发数 据了(发上线请求),系统就给客户端分配一个随机端口,这个端口和客户端的IP会随着上线请求一起发给服务器,服务收到上线请求后就可以从中获起发此请求 的客户的IP和端口,接下来服务器就可以利用获起的IP和端口给客户端回应消息了。

 参考资料:http://blog.csdn.net/suxinpingtao51/article/details/11809011

posted on
2016-04-09 09:32 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/williamliuwen/p/5370557.html

你可能感兴趣的文章
sql developer Oracle 数据库 用户对象下表及表结构的导入导出
查看>>
搭建DNS服务-----正向解析、反向解析、泛域名解析。
查看>>
详述在Linux上挂载window共享文件夹
查看>>
重置mysql 8.0 root用户密码
查看>>
extend vg(pv,lv)use HotPlug Storage PV for VMI(ECC Env)
查看>>
Charles 抓包手机app
查看>>
redis的主从集群环境搭建
查看>>
好程序员web前端带你了解JS的作用域链
查看>>
除了模拟手术教学,VR在医疗领域如何应用?
查看>>
JVM性能调优之如何书写高效优雅的代码
查看>>
谈数据中心“容灾和备份的区别”
查看>>
linux的LVM
查看>>
不同的类UNIX操作系统密码破解方法介绍
查看>>
MySQL 5.6 for Windows配置安装之解压缩版
查看>>
ubuntu jdk
查看>>
hive报错(2)udf无法找到第三方的类
查看>>
HashCode
查看>>
Nginx解析PHP问题
查看>>
A2SD 命令集
查看>>
实例:Linux EXT3文件系统下成功恢复误删的文件[原创]
查看>>