C# 如何在套接字服务器和客户端之间进行连接检查?

C# 如何在套接字服务器和客户端之间进行连接检查?,c#,python,sockets,C#,Python,Sockets,我在python服务器和c客户端之间有一个套接字连接,因此我试图在客户端定义一个布尔变量\u status,在该变量上存储连接状态(true或false)。我尝试了下面的代码,但它不工作;它总是返回一个错误的状态,有什么问题吗?还有比这更好的办法吗 c#代码: python代码: while True: try: msg = ReceiveQuery(client) if msg == "Are you here?":

我在python服务器和
c
客户端之间有一个套接字连接,因此我试图在客户端定义一个布尔变量
\u status
,在该变量上存储连接状态(true或false)。我尝试了下面的代码,但它不工作;它总是返回一个错误的状态,有什么问题吗?还有比这更好的办法吗

c#代码:

python代码:

    while True:
        try:
            msg = ReceiveQuery(client)
            if msg == "Are you here?":
                SendQuery("Yes",client)
        except Exception as e:
            print ('an exception has been generated')      

虽然我不知道套接字连接对象的实现
sc
,但我发现您的代码中存在一些问题:

  • ReceiveStatus()
    包含连接套接字和通过套接字接收数据。您应该将其分为连接和接收
  • 由于任务中启动了
    ReceiveStatus()
    ,因此可能会出现
    sc.SendQuery(“您在吗?”)
  • 虽然在无限循环中调用了
    SendQuery()
    ,但在任务中只调用了一次
    ReceiveQuery()
    。一旦任务结束,您就再也不会阅读新信息

这个想法很好;ping协议(echo请求/echo回复)是检查连接的方法。
task.Result
task.Wait
之后从Python返回时,它的值是多少?
task.Result
的值
尚未计算
您能否提供
ReceiveStatus()
的代码?@RolandBär:done这很有帮助!
    while True:
        try:
            msg = ReceiveQuery(client)
            if msg == "Are you here?":
                SendQuery("Yes",client)
        except Exception as e:
            print ('an exception has been generated')