一、实验说明
本次实验的游戏服务器的 IP 是 校园网的内网IP。
实验内容是采用TCP连接到游戏服务器,并且要求客户端能收发消息。如若不能访问该IP地址,可参考另一篇博文:基于TCP实现文件传输(C#实现C端,Python实现S端)。(其实质也是采用TCP的连接方式收发数据)
二、在win10下启用 telnet client(测试)
-
首先打开 cmd,输入
ping 10.160.52.106
看能否与游戏服务器建立连接。 -
能
ping
通后,在输入命令telnet
,进入 telnet 终端界面。 -
输入
set localecho
,打开本地回显。 -
连接游戏服务器,输入命令
open 10.160.52.106 3900
。 -
然后就进入了一个文字版的网游(金庸梦,这是20年前与BBS一起风靡大学校园的一款MUD游戏,具体是啥?俺也不知😂),显示效果如下:
三、客户端 UI 设计
-
用 VS2017 新建一个 Windows 窗体应用(.NET Framework) 的项目
-
点击进入 From.cs[设计],可将界面设计如下:
四、核心代码实现
-
添加命名空间
using System.Net.Sockets; using System.Net; using System.Media;
-
建立TCP连接
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ipaddress = IPAddress.Parse("10.160.52.106"); EndPoint point = new IPEndPoint(ipaddress, 3900); tcpClient.Connect(point);
① 新建一个socket对象(IPV4协议,数据流传输、TCP模式)
② 设定目标IP
③ 设定目标端口
④ 调用connect函数连接
-
接收游戏服务器发送的消息,Receive()
byte[] data = new byte[2048]; //传递一个byte数组,用于接收数据。length表示接收了多少字节的数据 int length = tcpClient.Receive(data); string message = Encoding.Default.GetString(data, 0, length); richTextBox1.Text = message;
-
向游戏服务器发送消息,Send()
byte[] sendBytes = Encoding.Default.GetBytes(textBox1.Text+"\n"); tcpClient.Send(sendBytes);
-
使用 System.Windows.Forms.Timer定时器类,实现每隔30秒切换一张图片
//实列化 System.Windows.Forms.Timer mytimer = new System.Windows.Forms.Timer(); //给timer绑定一个事件 mytimer.Tick += new EventHandler(change_Pic); mytimer.Enabled = true; //设置30毫秒的时间间隔 mytimer.Interval = 30000;
-
使用 System.Media.SoundPlayer类,实现播放wav
SoundPlayer sp = new SoundPlayer(); sp.SoundLocation = @"music.wav"; sp.PlayLooping();
五、效果展示

说明:为了演示,这里把图片的切换间隔设置成了2秒。其中的一些怪字符是 telnet终端的转义字符,控制字符的移动、字符颜色、响铃等。
六、参考🔗
七、完整源码
链接:https://pan.baidu.com/s/1EXZXG5NiyT3sRd7F8dcBQg
提取码:zilq说明:有个wav的音频文件,所以有点大!!!