C#有一种简单的方法可以进入TCP套接字编程吗?

zac*_*con 7 .net c# sockets

我参与过一个程序,该程序使用数据库将小型消息从一台PC发送到另一台PC.我所做的是将数据库放在一个共享文件夹中,让另一台PC上的程序连接到它(通过Path,不能少),这就是一种简单易用的方法来获取来回PC的消息在网络上.不是最好的选择,但这只是家庭作业,快速而肮脏的方法让我得到了成绩.

但现在功课已经完成,我想改进我的工作.该程序的问题是在部署阶段.有关直接路由到共享文件夹上的数据库的文件夹/安装路径和管理/共享问题太多.

所以stackoverflow中的优秀人员建议我尝试套接字编程,我认为这有点超出了我的联盟.但你永远不知道......

另外,我知道Sync和Async套接字编程之间的区别.一个街区,另一个街区没有.我正在研究的程序是一个简单的回合制游戏,所以我认为Synchronous可能已经足够好了,因为如果轮到你了,你真的无能为力.然而,问题是该计划被视为"没有回应".我试过异步,但遇到了线程问题,我认为这是我的联盟.

从逻辑上讲,程序很简单.一个主机,一个客户端.在客户端连接时,主机发送数据.然后客户端接收,发送自己的数据.等等,直到一个玩家输了.

我很遗憾地说我的学校只安装了.NET 2.0.没有WCF或任何东西.此外,它必须在C#Windows窗体中完成,因此XNA已经完成.

所以,我想问一下......有没有一种简单的方法可以进入套接字编程?任何可以提供帮助的指南/示例项目?可以研究和改编的预制代码?

我发现和改编的大多数样本都是聊天应用程序,我认为这些应用程序已经足够好了,但是将其模块化只会打破它.

小智 1

您遇到的聊天应用程序示例应该足够了。我不清楚你所说的“使其模块化”。

您需要的是设计一个通过连接发送的协议,可以说是一个规则协议,以便一个人知道另一个人在谈论什么。因此,您可以发送以下内容,而不是发送纯文本(聊天):

0x03(消息长度)
0x0A(此虚构协议中的移动命令)
0x02(命令的参数 1,在本例中为 X 坐标,全部在协议设计)
0x05(命令的参数2,本例中的Y坐标,都是协议设计中定义的)

现在完全取决于您收到并解释数据后会发生什么。就我个人而言,我会选择异步解决方案,因为它让你的程序去做其他事情(图形?)。根据我的经验,它更容易适应代码。