C# 是否有进入 TCP 套接字编程的简单方法?

标签 c# .net sockets

我开发了一个程序,该程序使用数据库将小消息从一台 PC 发送到另一台 PC。我所做的是将数据库放在一个共享文件夹中,让另一台 PC 上的程序连接到它(通过路径,同样如此),这是一种在 PC 之间来回获取消息的简单易行的方法在网络上。不是最好的选择,但这只是家庭作业,快速而肮脏的方法让我得到了分数。

但现在作业已经完成,我想改进我所做的。该程序的问题是在部署阶段。关于直接指向共享文件夹上的数据库,存在太多文件夹/安装路径和管理/共享问题。

所以 stackoverflow 的好心人建议我尝试套接字编程,我认为这有点超出我的能力范围。但你永远不知道...

另外,我知道同步和异步套接字编程之间的区别。一个 block ,另一个不。我正在开发的程序是一个简单的回合制游戏,所以我认为 Synchronous 可能已经足够好了,因为如果轮不到你,你真的什么也做不了。然而,问题是该程序被视为“未响应”。我尝试了异步,但遇到了线程问题,我认为这超出了我的范围。

从逻辑上讲,程序很简单。一个主机,一个客户端。客户端连接后,主机发送数据。然后client接收,发出自己的数据。依此类推,直到一名玩家输了。

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

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

我发现并改编的大部分示例都是聊天应用程序,我认为这已经足够好了,但是将其模块化只会破坏它。

最佳答案

你遇到的聊天应用例子应该够用了。我不清楚你所说的“使其模块化”是什么。

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

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

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

关于C# 是否有进入 TCP 套接字编程的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266998/

相关文章:

c# - 同时通过 ref 和 typecast

c# - TableLayoutPanel 标签对齐到左上角?

c# - ORA-21500 : internal error code, 参数 : [%s], [%s]、[%s]、[%s]、[%s]、[%s]、[%s]、[%s]

.net - SuspendLayout 和 BeginUpdate 的区别

java - 使用 php 作为客户端和服务器应用程序之间的媒介

android - unity android wifi socket通信通过Android DLL

c# - 从左到右解析阿拉伯语/RTL 文本

c# - 如何遍历日期范围?

c# - MySql 如果不存在则插入

c - C语言中的套接字和线程