建立TCP长连接的问题

问题描述

有个项目,接口采用TCP/IP的SOCKET通信方式。A系统作为服务器端,我自己编写客户端接收A实时发布的信息。服务器:192.168.0.1端口:444客户端:192.168.1.2用C#编写的客户端程序,怎么都收不到信息?用netstat-a看,连接已经建立起来。代码如下:TcpClientclient=newTcpClient();client.Connect(IPAddress.Parse("192.168.0.1"),444);NetworkStreamns=client.GetStream();intintRecv=1024;byte[]buffer=newbyte[intRecv];intRecv=ns.Read(buffer,0,intRecv);stringmsg=Encoding.Default.GetString(buffer,0,intRecv);

解决方案

解决方案二:
IPAddressipaddress=newIPAddress("192.168.0.1");intport=8505;EndPointendPoint=newIPEndPoint(ipaddress,port);Socketsocket=newSocket(AddressFamily.InterNetWork,ScoketType.Strea,ProtocolType.Tcp);socket.Connect(endpoint);if(socket.Connected){//判断连接上,接收数据;}

解决方案三:
NetWorkStreamstream=newNetWorkStream(socket);byte[]buffer=newbyte[1024];intreadLength;readLength=stream.Read(buffer,0,buffer.Length);stringmsg=Encoding.BigEndianUnicode.GetString(buffer);stream.Close();socket.Close();

解决方案四:
引用楼主mays的回复:

有个项目,接口采用TCP/IP的SOCKET通信方式。A系统作为服务器端,我自己编写客户端接收A实时发布的信息。

你的所谓“服务器端、客户端”的概念是乱的,看别的描述就更费劲了。
解决方案五:
引用楼主mays的回复:

TcpClientclient=newTcpClient();client.Connect(IPAddress.Parse("192.168.0.1"),444);NetworkStreamns=client.GetStream();intintRecv=1024;byte[]buffer=newbyte[intRecv];intRecv=ns.Read(buffer,0,intRecv);stringmsg=Encoding.Default.GetString(buffer,0,intRecv);

如果是长连接的话,在你写代码之前最好要服务器端文字性的通讯规范文档。你的简单代码不太像是产品中该有的。搞清楚人家服务器端的通讯规范的细节,搞清楚之后来写程序。假设你去肯德基吃东西,不能一进门就坐在门口桌子边吧,你得自己去点餐。
解决方案六:
0-1023的端口是普通应用程序的端口,避免占用这些端口1024-65535端口是开放的。应该是服务端进行端口和套接字的绑定,进行监听。客户端先访问服务端,之后服务端获得客户端的套接字之后再与客户端通信
解决方案七:
服务器:192.168.0.1端口:444客户端:192.168.1.2和不同网段有关系吗?

时间: 2024-08-03 04:31:00

建立TCP长连接的问题的相关文章

C#怎么用建立TCP长连接侦听

问题描述 我要写一个服务程序,需要用socket建立TCP的长连接来侦听客户端需要向客户端接收和发送数据,求教各位大大!~小弟刚接触通讯,菜鸟一个,能否请各位给我一个代码实例让我参考,谢谢了!~ 解决方案 解决方案二:与客户端进行心跳,自己去google解决方案三:看看c#socket通讯吧,很简单的东西了解决方案四:小弟刚接触通讯,很多东西都不明白请各位大大给个关键代码,指点一下,不胜感激!~诚心请教啦!~解决方案五:贴代码还不如自己先搜集资料学习google/baidu.再提出更具体的问题来

Delphi中多进程解决datasnap支持的tcp长连接数量少的问题

对于实时采集数据的项目,应用场景比如是这样的:5000客户端,每个客户端每隔500MS要给服务器上传一次数据. 大家知道,像INDY这种阻塞型的通信控件,所能支持的TCP长连接的一般地不能超过1000的数量(如果想要维持稳定运行的话). 原因是大家都晓得的,阻塞方式会为每一个SOCKET连接创建一个新的线程为之服务,而WINDOWS单个进程理论上允许最多的线程数量是2048个, 实际当中要少得多才行. 有人说可以用WINDOWS的IOCP通信模型解决,诚然!但IOCP编程过于复杂. 有人说,可以

android-Android与服务器采用tcp长连接传输数据的弊端

问题描述 Android与服务器采用tcp长连接传输数据的弊端 在做一个项目,有一个实时的统计的需求,想用tcp建立长连接来实现,但是感觉长连接会很耗电,有没有大神做过这方面的研究,想知道一下使用tcp长连接的利弊,会有哪些用户体验上面的影响 解决方案 最主要的就是费电,其次可能用户感觉不到什么,但是如果安装了电量统计,可能会有影响.建议稍微有个延迟,在省电方面会好些. 解决方案二: 累死你的程序,占用资源,你的其他功能还怎么运行

tcp 负载均衡,tcp长连接的重复使用

问题描述 tcp 负载均衡,tcp长连接的重复使用 问题: 1.我有很多终端设备(非手机)通过TCP连接负载均衡服务器,并被分配到相应的后端服务器(通过端口连接,但这些后端服务器除了运行mina TCP长连接服务也提供http服务),请问这些终端设备是否直接与后端服务器TCP连接,而非与负载均衡服务连接? 2.我想通过手机APP发送消息给上述问题中的终端设备(例如设备 A),手机App是通过http负载均衡到上述的后端服务器,问题就是我手机APP如何找到后端服务器(这个服务器有TCP连接 连接着

tcp-关于TCP长连接的问题?

问题描述 关于TCP长连接的问题? 各位大大,对于10000个长连接,服务端该怎么设计呢? 用事件选择模型可以应付吗?

长连接和短连接

1.TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接 时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的 经典的三次握手示意图: 经典的四次握手关闭图: 2. TCP短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接.client向server 发送消息,s

HTTP长连接和短连接(转)

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致.TCP有可靠,面向连接的特点.   2. 如何理解HTTP协议是无状态的 HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态.也就是说,打开一

C#中HttpClient使用注意:预热与长连接

原文:C#中HttpClient使用注意:预热与长连接 最近在测试一个第三方API,准备集成在我们的网站应用中.API的调用使用的是.NET中的HttpClient,由于这个API会在关键业务中用到,对调用API的整体响应速度有严格要求,所以对HttpClient有了格外的关注. 开始测试的时候,只在客户端通过HttpClient用PostAsync发了一个http post请求.测试时发现,从创建HttpClient实例,到发出请求,到读取到服务器的响应数据总耗时在2s左右,而且多次测试都是这

Server-push技术(comet)----------asp.net中的异步处理+client与服务器端的长连接

server-push技术已经面世很久了,但直到GTALK的诞生才慢慢的引导出这项技术,不过到现在为止,也很少有人去应用这方面的技术,server-push倒底是一个什么样的东西呢? 故名思义,server-push即"服务器推"的意思,ajax大家都用过,它和server-push是完全相反的两个东西,ajax是从服务器端拉取数据,如果要定期更新页面上显示的数据块,那么最简单的方法就是写个计时器,server-push则不同,它的本质是将client与server建立一个长连接,即连