我已经创建了自己的websocket类,它扩展了抽象的System.Net.WebSockets.WebSocket类。我们班使用TcpListener和TcpClient进行通信。在此服务器接收到请求升级到websocket连接的HTTP-Get格式化请求后,我能够成功地完成握手并与websocket客户端进行通信。
另外,我有一个简单的HTTP服务器,它使用HttpListener和HTTPClient发送和接收HTTP请求。
现在我想把它们结合起来。
我希望这个HTTP服务器在收到websocket请求后,将“连接”传输到我的websocket服务器来处理。然而,我很难从概念上理解TCP“连接”是什么。
我知道我可以使用现有的套接字创建一个TCPClient,但是我不确定如何检索现有的HTTPListener的套接字(也许它不能公开?)就这一点而言,我不确定如果我尝试让TCPClient和HTTPListener共享同一个套接字会发生什么。
那么,如何从现有的TCPListener构建HTTPListener呢?
发布于 2022-04-17 15:37:53
然而,我很难从概念上理解TCP“连接”是什么。
https://www.rfc-editor.org/rfc/rfc793.html (以及更新它的后续RFCs )是TCP的标准。它解释了什么是TCP连接,稍后将更详细地介绍:
多路复用: 为了允许单个主机中的许多进程同时使用TCP通信设施,TCP在每个主机内提供一组地址或端口。从因特网通信层与网络和主机地址连接,形成套接字。一对套接字唯一地标识每个连接。,即一个套接字可以同时用于多个连接。 端口到进程的绑定由每个主机独立处理。但是,将经常使用的进程(例如“记录器”或分时服务)附加到向公众公开的固定套接字上是有用的。然后可以通过已知地址访问这些服务。建立和学习其他进程的端口地址可能需要更动态的机制。 联系: 上面描述的可靠性和流量控制机制要求TCPs初始化和维护每个数据流的某些状态信息。这个信息的组合,包括套接字、序列号和窗口大小,称为连接。每个连接是由一对标识其两侧的套接字唯一指定的。 当两个进程希望进行通信时,它们的TCP必须首先建立连接(初始化双方的状态信息)。当它们的通信完成后,连接将被终止或关闭,以释放资源用于其他用途。 由于必须在不可靠的主机和不可靠的internet通信系统之间建立连接,因此采用了一种基于时钟序列号的握手机制,以避免连接的错误初始化。
https://stackoverflow.com/questions/71899205
复制相似问题