C#中的初学者简单网络编程?

时间:2011-10-31 19:08:49

标签: c#

我目前是C#的新手,我需要了解简单的服务器 - 客户端架构!

我目前正在尝试编写一个简单的服务器/客户端程序,基本上客户端可以将变量发送到服务器,服务器可以将其发送到另一个客户端。问题是我对此非常盲目,因为我对C#还是很陌生,尽管我有一些Java经验(但仍然没有使用网络)。

我的问题是:

  1. 我必须写多少个文件?
  2. 任何人都可以为我这样的程序提供框架或示例吗?
  3. 什么是TCP服务器?
  4. 这适用于在线游戏。一个客户端将掷骰子,服务器必须向所有其他客户端显示这是第一个客户端滚动的值。

    非常感谢任何帮助!

3 个答案:

答案 0 :(得分:9)

回答您的所有问题:MSDN - Network Programming (.NET 4)

答案 1 :(得分:5)

由于您正在计划TCP(因为您需要状态),因此您需要制定策略。您将获得有关建立连接和来回移动某种数据的大量信息。谷歌将为您提供超出您的处理能力。如果不做所有的工作,这里有一些步骤可以帮助您。

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

2)Heart Beat - 现在客户已经在服务器上注册了,客户端负责提供心跳,说它仍然在那里并且仍然计划继续工作。通常每3到10秒就很好。

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

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

现在是否使用套接字或WCF,我建议对TcpClient编程有一个基本的了解,然后运行WCF。你会惊讶于简单的套接字编程,但开销是一个杀手。没有什么可以被吓倒的。协调调用,线程以及更不用说安全性需要做很多工作。另一方面,WCF确实削减了一些开销。

我看看这个问题......

How to use socket based client with WCF (net.tcp) service?

答案 2 :(得分:3)

1)文件数量取决于您的具体实施方式。您可以将此体系结构简单地创建为服务器的1个类和客户端的1个类(您可以在文件中包含多个类)。根据您在设计过程中所做的复杂性和选择,您可以拥有许多文件或只有少数文件。

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

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