winsock控件的TCP和UDP协议的判断问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winsock控件的TCP和UDP协议的判断问题相关的知识,希望对你有一定的参考价值。

想用VB的winsock控件来编写一个局域网上网代理的程序,对于IE上网的问题已经解决,但QQ上网却不知道如果下手,听说QQ是用UDP协议的,问题是程序接收到上网软件的信息时如何判断是TCP协议还是UDP协议呢?TCP和UDP在上网信息有没有什么区别?
初学VB请高手们指点。
假如没有识别方法,那么从原理上讲,用winsock是否可以实现QQ的代理功能呢?请高手指点。

TCP和UDP协议相差挺大的。UDP代理相对,简单些,TCP难些。
QQ登陆器的设置可以选择 不使用高级协议/UDP/TCP 三种方式。。
不过没研究过有什么不同

我想 实现 局域网上网代理 有两种途径可以走。

1:底层直接转发其数据包(那么你台电脑就其一个网关作用),这种达到的话,你电脑的程序都能代理了。(vb的winsock应该无此能力,不知道我们的系统是不是有这项设置)
2:重建连接,在服务上实现(具体问题具体分析吧)
参考技术A TCP和UDP协议相差挺大的。UDP代理相对,简单些,TCP难些。
QQ登陆器的设置可以选择 不使用高级协议/UDP/TCP 三种方式。。
不过没研究过有什么不同

我想 实现 局域网上网代理 有两种途径可以走。

1:底层直接转发其数据包(那么你台电脑就其一个网关作用),这种达到的话,你电脑的程序都能代理了。(vb的winsock应该无此能力,不知道我们的系统是不是有这项设置)
2:重建连接,在服务上实现(具体问题具体分析吧)

代理这个没具体研究过,如果可以我们也交流交流--Q--271562312
参考技术B TCP 和UDP的包头是不一样的 QQ的UDP 提空不可靠地传输,但是速度比较快,对于你的程序,我也不懂VB 但是winsock的话 用高有专用识别UDP报头的函数的 用MSDN找一找 参考技术C 怎么可能判断...
winsock根本没这么高级的功能
参考技术D 恩,QQ这种,用UDP就可以了,UDP是无连接的,用的时候直接用就可以了,用TCP的话,要管理很多链接很麻烦。如果你要区分具体的内容,可以自己定义一下数据传输协议,
WinsockC.Protocol = sckUDPProtocol
这样用就OK

VB6 中的默认 WinSock 协议

【中文标题】VB6 中的默认 WinSock 协议【英文标题】:Default WinSock Protocol in VB6 【发布时间】:2011-12-21 20:06:53 【问题描述】:

我有一个基于 C# 的服务器和一些尝试连接的 VB6 客户端。问题是客户端似乎只是随机“丢失”消息。 myWinSock.Protocol 永远不会在任何地方设置,因此无论默认值是什么,客户端的 WinSock 都会是什么。如果默认是 UDP,那将回答我的问题并解释数据包的丢失。

VB6 WinWock 的默认协议是UDP 还是TCP

【问题讨论】:

我敢肯定,如果一方尝试使用 TCP 而另一方尝试使用 UDP,它根本不会工作。 尝试在两端使用wireshark,看看服务器端发送了哪些数据,客户端接收了哪些数据。 @Shane Wealti,是的,我想了很多,但我想尽可能消除所有潜在的问题。 【参考方案1】:

在 VB6 中,控件的属性是在设计器中设置的,并且没有生成的属性设置代码可以支持在属性表上所做的选择。

因此,您无法仅通过查看 IDE 显示的 VB6 代码来判断这一点。

您可以做的是单击 winsock 控件图标,然后查看网格中显示的属性。

如果您想以这种方式分析一堆文件,您可以查看*.frm 文件的原始内容,在开头您将看到为设计器网格中的控件设置了哪些属性。

也就是说,winsock 的默认协议是 TCP。但是您永远无法知道是否保留了默认设置。

【讨论】:

哇。非常感谢,我会试试这个。

以上是关于winsock控件的TCP和UDP协议的判断问题的主要内容,如果未能解决你的问题,请参考以下文章

VB6 中的默认 WinSock 协议

winsock是啥,是一门语言还是一个文件?

Windows socket+IP+UDP+TCP网络基础

vb.net如何使用TCP/IP协议向服务器发送字符串,要用到啥控件和函数?

VB6.0的winsock控件用UDP局域网广播数据,当数据很大时接收方报10040--数据包太大,请问怎么处理。

TCP/IP详解V2之UDP协议