c#初学者简单网络编程

本文关键字:网络编程 简单 初学者 | 更新日期: 2023-09-27 18:12:48

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

我目前正试图写一个简单的服务器/客户端程序,基本上客户端可以发送一个变量到服务器,服务器可以将其发送到另一个客户端。问题是,我对这一点一无所知,因为我对c#仍然很陌生,尽管我有一些Java的经验(但仍然没有网络)。

我的问题是:
  1. 我要写多少文件?
  2. 任何人都可以很好地为我提供这样一个程序的框架或示例吗?
  3. 什么是TCP服务器?

这是一个在线游戏。一个客户机将掷骰子,服务器必须向所有其他客户机显示这是第一个客户机掷出的值。

任何帮助都将非常感激!

c#初学者简单网络编程

回答你所有的问题:MSDN -网络编程(。净4)

既然计划使用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是来回传递数据。

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

我想检查一下这个问题…

如何使用基于套接字的客户端与WCF (net.tcp)服务?

1)文件的数量将取决于您的特定实现。您可以简单地为服务器创建一个类,为客户端创建一个类(一个文件中可以有多个类)。根据复杂程度和你在设计过程中所做的选择,你可以有很多文件,也可以只有几个。

一个很好的TCP服务器/客户端教程可以在这里找到

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