本文目录:
- 1、udp通讯过程客户端可不可以不bind?如果不bind则服务端如何向其发送信息
- 2、QQ登陆一直失败怎么办
- 3、qq登录时默认网关检测失败
- 4、linux c语言实现,udp协议
- 5、QQ.DNS的设置
- 6、qq域名解析不成功怎么办
udp通讯过程客户端可不可以不bind?如果不bind则服务端如何向其发送信息
关键是recvfrom返回的客户端addrClient是不能作为服务器返回客户端的地址使用的,即在sendto中不能使用由recvfrom返回得到的客户端地址。 楼主将UDP通讯和TCP通讯搞混了,不过说实话这个是很正常的。当初我学的时候没一本书是把网络通信编程写清楚地,只能靠自己摸索。 socket可以理解为通信地址,它由协议,IP和端口组成。在UDP模式中,绑定的目的是要告诉操作系统,当网卡从外部接收到数据包时,操作系统就知道应该把这个数据包交给哪个应用程序。 具体是这样的,网卡总是知道自己的IP是什么,因此网卡接收到网线中的数据包时,会提取数据包的包头,里面含有的IP如果是网卡自己的IP,它就会把该数据包交给操作系统,如果不是就将该数据包丢弃,可以认为操作系统不知道有该数据包。操作系统接收到数据包后,会根据每个数据包包含的端口号,将该数据包发给不同的应用程序。操作系统怎么会知道哪个端口号对应哪个应用程序呢?这个就是要求应用程序使用bind函数,将自己的端口号告诉操作系统。因此,所谓的端口冲突就是指其他应用程序已经通过bind告诉了操作系统该端口被它使用了,因此另外的应用程序就不能使用该端口了,即bind肯定失败! 所以,bind肯定是由接受数据包的应用程序使用的,这样的应用程序就是服务器应用程序,也可以看到我们需要为bind提供IP和端口号。并且,当初我还在疑惑为什么会有一个INADDR_ANY的IP指定,似乎bind根本不需要IP啊,只要端口就可以了。仔细一想才明白,因为一台主机可能会有2个网卡。因此,主机可能会有两个IP,这样bind这个函数允许我们自由指定需要绑定到哪块网卡上的特定端口。也可以不指定,通过INADDR_ANY由操作系统为我们指定。譬如,13端口在第一块网卡中被占用了,我们就可以使用bind明确指定自己的应用程序接收来自第二块网卡13端口的数据包。 UDP编程中作为客户端发送数据时,是不需要指定自己的IP和端口的,因此无需使用bind绑定,直接在sendto指定服务器的IP和端口就可以了。但实际上发送数据时,操作系统还是需要使用客户端机器上的一个IP和端口号的,这个IP和端口号由操作系统指派,譬如在操作系统处理sendto时,它可以指派1005端口给UDP客户端,此时如果有另一个客户程序再使用bind注册该端口,就会失败了。但实际情况大家都知道,UDP数据包的发送是相当快的,这种冲突几乎不存在,因为数据包发送后,即数据包通过网卡发到了网线中,操作系统就认为发送成功了,该端口就会被操作系统收回,标记“未使用”。 总结一下,udp服务器需要占用一个IP和一个端口号,且是固定的,是在调用了bind函数成功后便确定下来了。UDP客户端也需要使用一个IP和一个端口号,它们都是随机的,这次发送可能是第一块网卡,第二次可能是第二块网卡,端口也如此。发送后,该端口就被操作系统收回,因此客户端无法使用该端口接收来自服务器的数据包。 因此不能使用recvfrom的客户端的端口信息再调用sendto发送给客户端,因为客户端的电脑操作系统根本不会讲该数据包交给客户端应用程序。 以上用比较容易理解的概念介绍了下,其实精确说的话,很多事情不是操作系统做的,而是各种驱动程序完成的。具体怎么修改代码,楼主应该明白了吧,光改服务器端的代码,没用,客户端的代码也要改。这也是为什么UDP是不存在服务器,客户端之说的原因,因为任何一方给另一方发数据包,前提必须使另一方已经通过bind绑定了一个固定端口了。
QQ登陆一直失败怎么办
一是网络不通
二是防火墙禁止了
三是局域网服务器禁止了断口
第一、二的解决方案就不说了,第三点如何突破局域网服务器断口限制,方法如下:
用QQ珊瑚虫版本,
安装好后注意!一定要设置外挂包(自动启动设置的)
把端口改成80,然后最小化
打开珊瑚虫QQ,选择高级设置,在最后面勾上‘选择QQ登陆服务器’
把登陆到的服务器类型改成“TCP类型”,端口443
输入密码,登陆,应该OK
第3点的解决方案是针对突破局域网限制QQ端口登陆的问题,保证管用!
qq登录时默认网关检测失败
服务器超时的可能性有以下几种:
1、你的网络没有正确的连接上
2、你的网络的连接速度要小于QQ的要求
3、QQ的服务器正在维护
4、设置中QQ网络类型与机器的网络类型不符(很少见)
这是我以前碰到的几种问题,希望能给你些帮助
建议您可参考以下设置:
1、首先请您检查下防火墙设置,建议暂时关闭防火墙;
2、可能是由于QQ系统调整引起的,所以会造成某些号段不能登陆,建议您可以稍后再进行尝试;
3、尝试使用选择登陆服务器(目前有三种模式,分别是UDP模式、TCP模式和会员VIP模式)
操作方法:在2005 Beta3版本登陆窗口的左下角高级设置——选择登陆服务器,依次选择UDP模式、TCP模式和会员VIP模式(仅提供给会员);
4、可能是您所使用的代理已经失效,更换代理或者不使用代理,即可正常登陆
操作方法:在2005 Beta3版本登陆窗口的左下角高级设置——网络设置——类型,选择不使用代理,或者其他模式(选择好代理后,请先测试下是否可以正常使用);
5、因局域网实行封锁限制(端口被封),所以造成您的QQ无法登陆
解决方法:尝试使用HTTP代理
操作方法:在2005 Beta3版本登陆窗口的左下角高级设置——网络设置——类型,选择HTTP代理(选择好代理后,请先测试下是否可以正常使用);
6、最后,建议您尝试使用TM登陆。
请您可以将本地的聊天记录清除(建议在清除前先备份,以免丢失)再登陆尝试。在2005beta3版本登陆窗口中先输入QQ号码——左下角 高级设置——清除记录——同时删除该帐号对应的所有聊天记录文件 打勾 —— 输入QQ密码——确定 即可清除记录。 或者删除QQ安装目录下的相应号码文件夹,最后重新登陆即可
linux c语言实现,udp协议
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层–传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
QQ.DNS的设置
你是不是安装了防火墙啊,在里面点击设置到详细设置到访问规则,双击里面的QQ标志,在里面设定放行,再保存设定,就可以了.
我一开始也是遇到这种问题,在知道里得到别人的帮助,因此顺利解决了问题,试试吧,估计你也是这种问题,放行后保存设置,就能上了!
助你成功!
或者是用 QQ用户登陆有个高级设置里的网络设置类型选不使用代理
你ping下202。101.224.68(电信的IP)看有没有用
qq域名解析不成功怎么办
1.先看看密码是否正确
2.如果设置了防火墙,就把它关了.
3.一般你等会就好了!有的时候QQ他会在后台整理的!也就是说你只是在特定的时段登陆不上去!这样的话你稍微等2-3个小时要是还不可以的话那就需要给客服打电话了!
4.提示是密码错误,是否到到服务器验证的话,你就点”是”,就行了
如果是ip的问题,重启之后重新注册ip就好了.
本文来源:https://www.yuntue.com/post/121784.html | 云服务器网,转载请注明出处!