我目前是C#的新手,我需要了解简单的服务器-客户端架构!
我目前正在尝试编写一个简单的服务器/客户端程序,其中客户机可以向服务器发送一个变量,而服务器可以将其发送到另一个客户机。问题是我对此一无所知,因为我对C#还是很陌生的,尽管我有一些使用Java的经验(但仍然没有网络方面的经验)。
我的问题是:
这是为了一个网络游戏。一个客户端将掷骰子,服务器必须向所有其他客户端显示这是第一个客户端滚动的值。
任何帮助都将不胜感激!
发布于 2011-10-31 19:12:57
回答你所有的问题:MSDN -网络编程(.NET 4)
发布于 2011-10-31 22:36:51
因为您正在计划使用TCP (因为您想要状态),所以您需要制定一种策略。您将获得大量关于建立连接和来回移动某种数据的信息。谷歌会给你更多你无法处理的东西。不做所有的工作,这里有几个步骤可以让你导向。
1)连接注册-当客户端在线并希望与服务器通信时,它首先需要说:“嘿,我在这里,想要扮演一些骰子。”此初始握手可以是用于心跳和/或事务的连接id。如果打开,服务器将使用它来标识数据和相应的线程。
2)心跳--现在客户已经在服务器上注册了,客户端负责提供心跳,说它仍然在那里,并且仍然计划继续工作。通常每3-10秒就好。
3)制定请求/响应协议-对于“每个命令”,将有一个正式的程序。这个正式的过程将包括连接id,但也包括请求id。除非收到相应的请求id,否则客户端不会接受响应。此外,每个请求都需要一个成功或失败的响应来确定它是否符合API或什么不符合API。请求中将包含要执行的命令或操作。有些人使用int's来分派命令id,然后使用id上的开关来调用入口点方法(cmd id =1是connect(),cmd =2是rolldice(),等等)。您可以包含标识命令结果的附加有效载荷。
简而言之,1是握手,2是保持活动,3是来回传递数据.
现在,无论是使用套接字还是使用WCF,我建议您对TcpClient编程有一个基本的理解,然后使用WCF运行。您会惊讶于套接字编程是多么简单,但是开销却是一个杀手。没什么好怕的。要协调调用、线程,更不用说安全性,这是一项很大的工作。另一方面,WCF确实减少了一些开销。
我想看看这个问题..。
发布于 2011-10-31 19:37:31
1)文件数量将取决于您的特定实现。您可以简单地为服务器创建一个类,为客户端创建一个类(一个文件中可以有多个类)。根据您在设计过程中所做的复杂性和选择,您可以有许多文件,也可以只有几个文件。
2)一个简单的TCP服务器/客户端的好教程可以找到这里。
3) TCP服务器是等待TCP客户端连接的进程。TCP代表传输控制协议。从维基百科:TCP提供可靠、有序的字节流从一台计算机上的程序到另一台计算机上的另一种程序。
https://stackoverflow.com/questions/7958449
复制相似问题