我正在用VB.Net开发文件传输应用文件的大小各不相同,但最大可达10+GB。我已经创建了一个聊天应用作为测试。在客户端,我运行此代码以连接到服务器。DimclientSocketAsNewSystem.Net.Sockets.TcpClient()DimserverStreamAsNetworkStreamclientSocket.Connect("127.0.0.1",80)我也可以用它来传输文件吗?我希望该应用能够通过防火墙和其他东西运行。所以我想我需要客户端上的传出数据通过端口80。在服务器上我希望能够在另一个端口(例如8888)上接收数据。这可能吗?最后一个问题是。为此,我应
抱歉这个愚蠢的问题。传输层的功能是消息的可靠传递。UDP本质上是不可靠的,那我们为什么要在传输层使用它呢?谢谢编辑:澄清一下,我已经阅读了Wiki和其他来源。我的问题是UDP是不可靠的(我知道它的原因、优势和使用地点等),为什么不在其他层而不是传输层使用它(UDP),这意味着可靠性。 最佳答案 有时,快速且无间断地发送数据比流的可靠性更重要。DNS使用UDP,因为DNS服务器和客户端之间的交易单程仅包含一个数据包。如果数据包丢失,将根据客户端的请求重新传输。同样,流式视频通常使用UDP作为传输协议(protocol),因为偶尔丢失数
从我读到的关于UDP的内容来看,它没有错误处理,没有检查发送/接收数据的顺序,没有检查重复的数据包,没有检查损坏的数据包,显然不能保证发送的数据包是均匀的收到...考虑到这一点,为什么地球上实际上可以选择在UDP中使用校验和?因为如果您想确保以正确的顺序接收到发送的数据(并且没有损坏等),那么您肯定会使用TCP... 最佳答案 UDP数据包包含一个16位CRC校验和的字段,接收操作系统将使用它来检查数据包是否损坏。如果校验和存在但失败,则数据包将被静默丢弃。应用程序会注意到数据包消失并采取纠正措施。所有现代操作系统都默认启用UDP校
我需要在我的应用程序中使用udp和tcp连接,TcpClient/TcpListener很少处于事件状态,但udp是主要用途。这是服务器代码:staticvoidMain(string[]args){TcpListenerlistener=newTcpListener(IPAddress.Any,25655);listener.Start();Socketsck=listener.AcceptTcpClient().Client;UdpClientudpServer=newUdpClient(1100);IPEndPointremoteEP=newIPEndPoint(IPAddres
我的问题的重点是询问是否接受同时使用TCP和UDP在客户端和服务器之间进行通信。我正在制作一个实时客户端服务器游戏,其中需要保证部分通信(登录等),但其他部分可以丢包(状态更新等)。所以,我想使用UDP进行大部分数据通信,但我不想实现自己的框架来确保我的控制通信(登录)得到保证。那么,最初使用TCP管理连接,然后在单独的端口上来回发送数据通信包是否合理? 最佳答案 您绝对应该那样做(使用TCP和UDP来完成不同的通信任务。)而且您甚至不必使用两个不同的端口。Onewillsuffice.您可以在同一端口上收听两种不同的协议(prot
当我学习各种技术时,我经常尝试思考我经常使用的应用程序如何实现这些东西。我玩过一些MMO和一些FPS。我环顾四周,偶然发现了这个线程:http://www.gamedev.net/topic/319003-mmorpg-and-the-ol-udp-vs-tcp我一直看到UDP在允许丢失一些数据包的情况下大放异彩。涉及的开销更少,更新速度更快。环顾四周并阅读了各种文章和主题后,我发现字符定位通常是使用UDP完成的。由于正在发生的所有快速变化,像FPS这样的游戏通常会使用UDP来完成。我已经多次看到有人指出同时使用UDP和TCP时可能出现的问题。这些问题可能是什么?这些问题是新手程序员最
这是不是因为TCP连接是持久连接,所以服务器需要同时处理很多请求,因此需要不同的连接套接字?但是如果UDP传输完成,下一个连接将发起到同一个服务器套接字,所以UDP只需要一个套接字。这是我的推测。这是正确的吗? 最佳答案 原因是TCP有两种不同的状态需要控制,而UDP只有一种。当监听端口上的TCP连接时,网络堆栈需要跟踪端口号和你正在监听的接口(interface),以及传入的TCP连接请求的积压列表套接字,并将该状态保存在与您传递给listen()/bind()/accept()的套接字关联的内部数据结构中。只要套接字存在,该数据
我正在编写一个基于UDP的客户端服务器并且已经获得了相当多的代码,但是我对UDP服务器如何将响应发送回UDP客户端感到困惑,这是我目前的理解:假设一个UDP客户端想要和一个UDP服务器通信,所以它会向UDP服务器发送一个请求(使用在客户端打开的UDP套接字),现在这将到达UDP服务器的UDP模块,UDP模块将使用端口号识别UDP服务,并将该请求发送到该UDP服务/服务器。现在,由于UDP是一种无连接协议(protocol),因此与TCP不同,UDP服务器不会通过某些连接发送响应,相反,UDP服务器将从请求中提取源IP地址和源端口并将响应发送回客户端.我的困惑是,在服务器端,有一个绑定(
我正在编写一组客户端/服务器程序根据客户端请求的操作,我使用makeTCP或者UDPrequest。客户端的实现很简单,因为我可以轻松地打开与任何协议(protocol)的连接并将请求发送到服务器端。另一方面,在服务器端,我想在同一个端口上同时监听UDP和TCP连接。此外,我喜欢服务器为每个连接请求打开新线程。我采用了以下解释的方法:linktext我通过为每个TCP/UDP请求创建新线程来扩展此代码示例。如果我只使用TCP,这会正常工作,但当我尝试进行UDP绑定(bind)时它会失败。请给我任何建议,我该如何纠正这个问题。发送这是服务器代码:publicclassServer{pub
我正在准备我的大学考试,去年的问题之一是“如何使UDP多播可靠”(如tcp,丢失数据包的重传)我想过这样的事情:服务器使用UDP发送组播每个客户端发送接收该数据包的确认(使用TCP)如果服务器意识到不是每个人都收到数据包,它会向特定客户端重新发送多播或单播问题是可能有一个客户端经常丢失数据包并强制服务器重新发送。好吃吗? 最佳答案 Everyclientsendacknowledgementofreceivingthatpackets(usingTCP)为每个数据包发送一个ACK,并使用TCP这样做,不能扩展到大量的接收者。使用