【问题标题】:C# Service using Sockets & Threading With PHP Web Interface (PHP sockets)C# 服务使用套接字和线程与 PHP Web 界面(PHP 套接字)
【发布时间】:2011-05-24 15:36:13
【问题描述】:

您好希望有人可以帮助我。

  • 我的 .net 应用程序连接(通过 tcp) 到我们将调用的服务 “超级服务”(读取和发送数据)
  • 我的应用程序有一个开放的套接字供 PHP 使用 连接到(允许人们从网络界面使用他们的用户名和密码连接到“超级服务”)
  • 当有人通过 PHP 连接时,我想要 产生一个线程(这是一个新的 连接到超级服务)

我最初想这样做是因为处理 PHP 连接的线程与连接到“超级服务”的线程相同,这将使生活变得非常简单。

但是一旦页面加载,PHP 将关闭套接字,我仍然需要为 Web 界面的该用户保持与“超级服务”的连接。

所以我想到了以下方式:

  • 1) PHP 连接到打开的套接字 我的应用程序并发送用户名/密码
  • 2) 我的应用程序生成了一个新线程 连接到“超级服务”(使用 提供的用户名/通行证)并创建 新指南
  • 3) 生成的线程然后被放置 进入字典(Guid,Thread)和 将 Guid 报告回 PHP 为 保存在会话中。
  • 4) PHP 再次连接到我的应用程序,但是 带有 GUID 和消息。
  • 5) 我的应用程序找到相关联的标题 到该用户/客户端(使用 guid)

我可以做到。

但是接下来的步骤是能够向/从该头(然后向超级服务发送/获取)发送和获取信息是我卡住的地方......

或者有更好的方法吗?

再次提前致谢!

注意:重写的问题希望更有意义。

【问题讨论】:

  • 第一次关闭到 PHP 应用程序的套接字后线程还在工作吗?
  • 是的,线程需要保持与“超级服务”的 tcp 连接

标签: c# multithreading sockets communication


【解决方案1】:

您不能真正向线程发送消息,但您可以存储另一个线程可能接收到的消息。如果您想这样做,请查看Monitor.Wait()Monitor.PulseAll()。您必须将数据存储在目标线程可以访问的地方,并让目标线程等待并检查新消息。

或者,您可以只将连接到“超级服务”的套接字存储在该字典中,而不是尝试控制线程。

【讨论】:

  • 嗨,我已经编辑了我的问题,希望更有意义!我想我还不够清楚,我希望能够与服务建立多个连接(例如,不同的人通过 Web 界面通过我的应用程序多次登录服务)
  • 嘿,谢谢你的建议。我喜欢只存储套接字的想法,我一直在研究这两种方法以查看最适合的方法。感谢您的帮助。
猜你喜欢
  • 2014-03-10
  • 2015-10-06
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 2015-09-29
  • 2011-12-19
  • 1970-01-01
  • 2014-11-05
相关资源
最近更新 更多