问题描述: 宿主机系统:Windows10;虚拟机系统:windows7 虚拟机作为服务器,宿主机作为客户端 客户端进行套接字通信时不能与服务器连接,通信设置正常; 能够ping通也能够telnet通; 但是程序建立后不能进行来连接;
V1$ = "Scoket Connect" ***SOCKConNECT 1,101,42353,0*** IF E1%<0 V1$ = "Scoket Connect Error" CallProc fnSockErr() GOTO *End ELSE V11% = 1 V12% = 0 V1$ = "Sock1Connect Successful" ENDIF
原因分析: 1)防火墙问题排除; 2)能够ping通及telnet通虚拟机IP设置问题排除; 3)因为可以通过TCP调试助手连接到服务器,系统相关的设置问题排除; 4)客户端进行通信时通过TCPView进行监视发现,客户端建立连接时的IP为回环地址:127.0.0.1; 对客户端IP重新进行设置时后还会出现;通信时LocalAddress与RemoteAddress相同;也就是自己连接自己;套接字客户端访问资源自身端口是随机的,但是目标地址的端口是可以指定的,程序中对客户端的目标端口进行了指定,对客户端端的目标地址只进行了最后字节的设定,设定值与服务器最后自己相相同;问题就发生在这个地方,要对目标地址的IP全部进行设定,负责客户端不能找到服务器的IP地址;
解决方案: 程序修改 指令:SOCKConNECT 1,101,42353,0 改为:SOCKConNECT 1,Byte2Int(192,168,35,103),60000,0 要指定服务器的全部地址;



