C# TCP客户端未在Windows 8.1上发送

C# TCP客户端未在Windows 8.1上发送,c#,network-programming,tcpclient,C#,Network Programming,Tcpclient,我有一个使用TCP连接进行通信的应用程序。 在Windows 7计算机上使用此应用程序时,它将发送数据。但当我在Windows8.1机器上使用相同的应用程序时,它将连接到服务器,但不会发送数据 我已经检查了应用程序如何连接到服务器,在Windows7和8.1上,这是相同的 你知道为什么会出现这个问题吗 以下是连接类的代码: public class TcpCon { private TcpClient tcpClient; public bool Connected {

我有一个使用TCP连接进行通信的应用程序。 在Windows 7计算机上使用此应用程序时,它将发送数据。但当我在Windows8.1机器上使用相同的应用程序时,它将连接到服务器,但不会发送数据

我已经检查了应用程序如何连接到服务器,在Windows7和8.1上,这是相同的

你知道为什么会出现这个问题吗

以下是连接类的代码:

public class TcpCon
{
    private TcpClient tcpClient;

    public bool Connected
    {
        get 
        { 
            if(tcpClient != null)
                return tcpClient.Connected;
            return false; 
        }            
    }


    public void Connect(String ipAddr, int port)
    {
        if (tcpClient == null)
        {
            tcpClient = new TcpClient();

            tcpClient.Connect(ipAddr, port);

        }

    }

    public void Disconnect()
    {
        if (tcpClient != null)
        {
            tcpClient.Close();
        }

    }

    public void Send(Byte[] byteArr)
    {
        NetworkStream strWrite = tcpClient.GetStream();
        if (strWrite.CanWrite)
        {
            strWrite.Write(byteArr, 0, byteArr.Length);
            strWrite.Flush();
        }
    }

}

你检查过防火墙设置了吗

您是否尝试使用管理员权限运行它,以查看是否存在权限问题

使用WireShark、tcpmon、Fiddler等检查连接中的问题

发送之前,请尝试在连接上添加状态检查:

尝试将keepalive添加到您的连接:

TcpClient client = ... ;
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
在代码周围包装一个异常处理程序以检查错误

在Windows 8.1中,您是否在Windows应用程序中运行它?在这种情况下,您需要请求网络许可吗?在以下位置查找网络:

今晚进行进一步调查,您的代码在Windows 8.1上运行良好。我通过同一个专用网络从一台Windows 8.1计算机连接到另一台Windows 8.1计算机上的另一台物理计算机

我可以通过以下方式复制您的无响应连接和其他故障:

1通过防火墙-确保客户端和服务器上的相关防火墙设置均已打开

2连接到错误的插座和端口

3主机在错误的插座或端口上

4未向服务器发送正确的终止符GetBytes的编码不正确。检查您发送的数据是否按照服务器的要求正确格式化,以获得相关确认

我唯一能看到潜在问题的地方是:

 if (strWrite.CanWrite)
  {...}
如果返回false,则即使连接成功,也不会发送字节


这就是我所拥有的一切——祝你好运

已为此问题关闭防火墙。该应用程序具有管理员权限,而不是Windows应用程序。我已使用Wireshark进行了查看。在那里,我看到连接已建立。只有必须发送的数据才会显示。在我的Win7机器上是的。我正在使用IP地址。通过putty可以到达服务器。然后发送数据。所以我希望它是与Win8上的.NET有关。在今晚进一步调查后,答案更新了。祝你好运谢谢你的意见。今天我尝试连接到另一个端口。效果很好。问题在于端口8080。只有在这个端口上我才遇到这个问题。你甚至没有包含任何实际尝试发送任何东西的代码,更不用说你提供了一个完整的代码示例,用于网络问题的代码示例需要同时包含服务器和客户端。有关详细信息,请参见,包括仍然完整的简明、最少的代码示例的重要性。考虑到目前为止的信息,您的具体问题的底线是:如果您可以成功连接,但存在其他问题,那么几乎可以肯定您在客户端或服务器中存在错误。缺少代码,没有人能指出错误。