问题描述
有个项目,接口采用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和不同网段有关系吗?