关于网络中TCP连接的问题,需要C#的知识和网络通信的知识

问题描述

问题如图:

解决方案

解决方案二:
大神在哪里,小弟做C#sockettcp连接的小程序碰到这种结构发现只能在同一个路由器下的两台计算机连接。怎么办啊啊啊啊啊
解决方案三:
做个对等网络,但最好用UDPhttp://www.cnblogs.com/zhangtao/articles/1440777.html
解决方案四:
或者在路由器上把pc2映射出去
解决方案五:
p2p跟打洞是两回事,大多数up2p都不是打洞。
解决方案六:
大多数up2p都不是打洞-->大多数p2p都不是打洞p2p是网络协议设计策略,而不是简单的“打洞”技术。由于“打洞”这个词儿比较技术化、比较酷,所以许多人只喜欢这类外表光鲜的词儿,而不喜欢研究策略性的设计。
解决方案七:
对于tcp长连接方式,你可以用一个clientA连上server,然后server随时推送消息给clientA;然后你再用clientB连上server,这样server随时推送消息给clientB。这样进行A与B的互相访问,也就非常容易了。因此你需要有一台服务器放到所有client都能访问的位置,并且实现c-s的tcp长连接。即可。
解决方案八:
引用6楼sp1234的回复:

对于tcp长连接方式,你可以用一个clientA连上server,然后server随时推送消息给clientA;然后你再用clientB连上server,这样server随时推送消息给clientB。这样进行A与B的互相访问,也就非常容易了。因此你需要有一台服务器放到所有client都能访问的位置,并且实现c-s的tcp长连接。即可。

恩,这我目前想到的解决办法也是公网上放一台服务器,各个客户端与服务器长连接,通过公网服务器分发内容。但是如果客户端很多,那长连接太多了,所以想当服务器有消息需要推送到客户端时,由服务器建立连接,这样可以节省很多开销。但是正如有NAT的存在,好像比较困难。不知道现在移动端app的消失都是服务器推送的,还是app向web询问后回发的。我是做智能家居的,所以客户会用手机在任意地方关灯开灯什么的,还要手机上看家里的监控录像,不知道怎么搞,如果每次都是客户端询问感觉延迟很严重。

时间: 2024-09-15 05:25:06

关于网络中TCP连接的问题,需要C#的知识和网络通信的知识的相关文章

.Net开发中TCP反向代理、Socket 连接池和数据包解析器教程

TCP反向代理 一般的Web反向代理大家很熟悉了,主要是通过在客户端和服务端之间架设一层代理服务器,转发客户端的请求至服务端或数据库,并将结果回复给客户端. 其特点主要有: 1.缓存一些数据库I/O过重.却更新不频繁的数据,或者静态数据,如文件.图片等.2.隔离客户端(公网)和服务端(windows服务.Web服务.文件服务),仅将反向代理服务器的IP.名称.host和端口等暴露给公网.3.基于第2点,其应该是轻量的.可随时重启的,这在服务端自身所在的服务器重启代价较高或不能忍受重启的条件下,极

网络编程-哪位大神能告诉我TCP连接池是干吗用的

问题描述 哪位大神能告诉我TCP连接池是干吗用的 如题,通俗易懂的说法有吗?我们老师说是一个包,那我应该怎么管理它 解决方案 http://zhuweisky.cnblogs.com/archive/2006/03/16/351301.html 解决方案二: 凡是带有"池"的,比如数据库连接池.对象池.缓冲区池(后面可以看到IBuffPool)等等,都是为了避免资源的反复创建/销毁所带来的开销.需要为哪些资源对象建立"池"了?这些资源对象通常符合下面几个特性: (1

TCP连接探测中的Keepalive 和心跳包

采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃.当机.网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回.很多时候,这不是我们需要的.我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户. 如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用.一种是由TCP协议层实现的Keepalive,另一种是由应用层自己实现的心跳包. TCP默认并不开启Keepalive功能,

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.6 TCP连接的建立和终止

2.6 TCP连接的建立和终止 为帮助大家理解connect.accept和close这3个函数并使用netstat程序调试TCP应用,我们必须了解TCP连接如何建立和终止,并掌握TCP的状态转换图. 2.6.1 三路握手建立一个TCP连接时会发生下述情形. (1)服务器必须准备好接受外来的连接.这通常通过调用socket.bind和listen这3个函数来完成,我们称之为被动打开(passive open). (2)客户通过调用connect发起主动打开(active open).这导致客户T

linux网络编程之TCP/IP基础(四) TCP连接的建立和断开、滑动窗口

一.TCP段格式: TCP的段格式如下图所示 源端口号与目的端口号 源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接. 序号 序号表示在这个报文段中的第一个数据字节序号. 确认号 仅当ACK标志为1时有效.确认号表示期望收到 的下一个字节的序号. 头部长度 4位,TCP头部最多60个字节,最少20个字节 保留位 6位,必须为 0 6个标志位 URG-紧急指针有效 ACK-确认序号有效 PSH-接收方应尽快将这个报文段交给应用层 RST- 连接重置 SYN-同步序

Android开发使用Netty的TCP连接中使用SSL加密

  1 Introduction   数据安全在网络通信中是非常重要的一个方面.为了支持 SSL/TLS,Java 提供了 javax.net.ssl包下的类SslContext 和 SslEngine .在Netty框架下,I/O数据在ChannelPipeline中被管道中的ChannelHandler处理并转发给下一个ChannelHandler.自然而然地,Netty也提供了ChannelHandler的实现SslHandler来支持SSL, 有一个内部 SslEngine 做实际的工作

Apache中并发控制、查看进程数、TCP连接、压缩功能说明

一:apache有关并发控制 主要是 prefork和worker二个其中一个来控制.我们可以使用httpd -l来确定当前使用的MPM是prefork.c,还是Worker.c. # httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c 相关的配置在httpd.conf 当中可以找到 二:查看httpd进程数(即prefork模式下Apache能够处理的并发请求数): ps -ef | grep httpd |

求助,如何在C#中使用SetTcpTable,作用是要断开本机某端口的指定TCP连接

问题描述 如题网上找了很多最后发现使用SetTcpTable可以做到,但是在C#里面不知道如何下手,真心求教...类似Currports.TCPView等软件,断开TCP的功能 解决方案 解决方案二:不知道你是不是这个意思解决方案三: 解决方案四:引用1楼andywangguanxi的回复: 不知道你是不是这个意思 不是关闭端口,是关闭连接端口的某一条tcp连接解决方案五:求助啊解决方案六:一个人都没有吗

如何干掉一条tcp 连接(活跃/非活跃)

如何干掉一条tcp 连接(活跃/非活跃) 背景 最近在测试环境部署服务的时候老是会有端口被占用情况用netstat/ss 查看后发现端口一直被占用 同另外一个ip 建立了tcp 连接,类似于这样: ESTAB 0 0 192.168.103.169:12345 192.168.103.12:10261 当然这个问题也不是最近才遇到,之前也遇到过,不过之前都是很快这个连接就自动消失,我就可以欢快 的使用我自己喜欢的12345 端口,无奈这次一直连续好几天这个连接一直存在导致我一直无法使用这个端口.