C# 简单的C语言网络编程,适合初学者?

C# 简单的C语言网络编程,适合初学者?,c#,C#,我目前是C#新手,我需要了解简单的服务器-客户机体系结构 我目前正在尝试编写一个简单的服务器/客户机程序,其中客户机可以向服务器发送变量,而服务器可以向另一个客户机发送变量。问题是我真的对此视而不见,因为我对C语言还是很陌生,尽管我对Java有一些经验(但对网络还没有) 我的问题是: 我需要写多少文件 有人能为我提供这样一个程序的框架或示例吗 什么是TCP服务器 这是为在线游戏设计的。一个客户端将掷骰子,服务器必须向所有其他客户端显示这是第一个客户端掷的值 任何帮助都将不胜感激 回答您的所有问题

我目前是C#新手,我需要了解简单的服务器-客户机体系结构

我目前正在尝试编写一个简单的服务器/客户机程序,其中客户机可以向服务器发送变量,而服务器可以向另一个客户机发送变量。问题是我真的对此视而不见,因为我对C语言还是很陌生,尽管我对Java有一些经验(但对网络还没有)

我的问题是:

  • 我需要写多少文件
  • 有人能为我提供这样一个程序的框架或示例吗
  • 什么是TCP服务器 这是为在线游戏设计的。一个客户端将掷骰子,服务器必须向所有其他客户端显示这是第一个客户端掷的值


    任何帮助都将不胜感激

    回答您的所有问题:

    1)文件的数量取决于您的具体实现。您可以创建此体系结构,只需为服务器创建一个类,为客户端创建一个类(一个文件中可以有多个类)。根据设计过程中的复杂性和选择,您可以有许多文件,也可以只有少数文件

    2) 可以找到一个简单TCP服务器/客户端的好教程


    3) TCP服务器是一个等待TCP客户端连接的进程。TCP代表传输控制协议。From:TCP提供了从一台计算机上的程序到另一台计算机上的另一个程序的可靠、有序的字节流传递。

    由于您计划使用TCP(因为您需要状态),因此需要制定策略。您将获得大量关于建立连接和来回移动某种数据的信息。谷歌会给你超出你能力范围的东西。在不做所有工作的情况下,这里有几个步骤可以让你适应环境

    1) 连接注册-当客户端联机并希望与服务器通信时,它首先需要说“嘿,我在这里,想玩一些骰子。”此初始握手可以是用于心跳和/或事务的连接id。服务器将使用它来标识数据和相应的线程(如果打开)

    2) 心跳-现在客户机已经向服务器注册,客户机负责提供心跳,表示它仍然在那里,并且仍然计划继续工作。通常每3-10秒就好

    3) 开发请求/响应协议-对于“每个命令”都将有一个正式的过程。此正式流程将包括连接id和请求id。客户端将不接受响应,除非它收到相应的请求id。此外,每个请求都需要成功或失败响应,以确定它是否符合API。请求中将包含要执行的命令或操作。有些人使用int来分派命令id,然后使用id上的开关来调用入口点方法(cmd id=1是connect(),cmd id=2是rolldice(),等等)。您可以包括标识命令结果的额外有效负载

    简而言之,1是握手,2是保持活动状态,3是来回传递数据

    现在,无论是使用socket还是WCF,我建议您对TcpClient编程有一个基本的了解,然后使用WCF运行。你会惊讶于socket编程是多么简单,但是开销是一个杀手。没有什么可怕的。协调调用、线程以及更不用说安全性都需要做大量工作。另一方面,WCF确实减少了一些开销

    我想看看这个问题


    提示:不要信任客户。通常,客户端应该要求服务器掷骰子,服务器会将掷骰值发送给所有客户端。我建议您查看WCF。这是一本适合WCF初学者的好书。如果您想了解您正在尝试执行的操作的详细信息,可以阅读聊天客户机示例。Wcf还将简化认证过程。