目录
- 一、测试连接服务器
- 二、编写客户端
- 1.新建项目和界面设计
- 2.连接服务器
- 3.发送数据
- 4.播放背景音乐
- 5.变换背景
- 三、总结
- 参考资料
一、测试连接服务器
windows+R打开cmd,先ping一下服务器的网址,看是否能连通(这是学校的内网,没连学校内网是ping不同的):
首先打开Telnet服务:
使用telnet
命令进入 telnet 终端界面。
输入 set localecho,打开本地回显。
连接游戏服务器,输入命令 open 10.1.230.74 3900
,进入初始界面:
自己按要求创建人物,然后就可以玩了,但没有客户端界面不够美观,所以我们要自己写一个。
二、编写客户端
1.新建项目和界面设计
使用VS2019创建一个窗体应用:
添加音乐播放组件:
拖动控件设计窗口,最终界面如下:
2.连接服务器
代码(注意相关引用using System.Net.Sockets;):
private NetworkStream stream;
private TcpClient tcpClient = new TcpClient();
private void button10_Click(object sender, EventArgs e)
{
try
{
//向指定的IP地址的服务器发出连接请求
tcpClient.Connect("10.1.230.74", 3900);
listBox1.Items.Add("连接成功!");
stream = tcpClient.GetStream();
byte[] data = new byte[1024];
//判断网络流是否可读
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
string msg = Encoding.Default.GetString(data, 0, data.Length);
string str = "\r\n";
char[] str1 = str.ToCharArray();
string[] msg1 = msg.Split(str1);
for (int j = 0; j < msg1.Length; j++)
{
listBox1.Items.Add(msg1[j]);
}
}
}
catch
{
listBox1.Items.Add("连接失败!");
}
}
运行:
3.发送数据
双击确定按钮,设计它的点击事件:
private void button12_Click(object sender, EventArgs e)
{
//music_play();
if (tcpClient.Connected)
{
//向服务器发送数据
string msg = textBox1.Text;
Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg + "\n");
stream.Write(outbytes, 0, outbytes.Length);
byte[] data = new byte[1024];
//接收服务器回复数据
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
string msg1 = Encoding.Default.GetString(data, 0, data.Length);
string str = "\r\n";
char[] str1 = str.ToCharArray();
string[] msg2 = msg1.Split(str1);
for (int j = 0; j < msg2.Length; j++)
{
listBox1.Items.Add(msg2[j]);
}
}
}
else
{
listBox1.Items.Add("连接已断开");
}
textBox1.Clear();
}
嘿嘿,忘了截图了,宿舍连不上校园网就看不到反馈。反正就是按照它左边的框里的要求输入名称呀密码呀啥的,服务器接收到后继续执行下一指令,然后再输入,如此反复而已。
4.播放背景音乐
播放button的点击事件:
private void button13_Click(object sender, EventArgs e)
{
string s = @"C:\Users\86150\VSproject\game\怎么办-SEVENTEEN.mp3";
axWindowsMediaPlayer1.URL = s;
}
private void button14_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();//停止播放
}
由于是播放音乐,图片无法展示其效果。
5.变换背景
双击timer1控件编写函数:
private void timer1_Tick(object sender, EventArgs e)
{
picture++;
string picturePath = @"C:\Users\86150\VSproject\game\pic\" + picture + ".jpg";
//设置图片填充
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;//StretchImage为拉伸填满整个box
pictureBox1.Image = Image.FromFile(picturePath);
if (picture == 5)
picture = 0;
}
在图片路径里加入几张图片,以1、2、3…命名:
效果:
三、总结
在老师的布局基础上添加按键功能时,其它都没什么问题,但音乐播放怎么也实现不了,一直都会报一个异常System.BadImageFormatException:“未能加载文件或程序集“AxInterop.WMPLib, Version=1.0.0.0, Culture=neutral, Publi
,我的media player不能再这个代码中使用,所以重新建了一个项目,仿照了老师的布局,再次使用media player时就没有问题了。
参考资料
https://blog.csdn.net/weixin_45873781/article/details/109827713
https://blog.csdn.net/qq_43279579/article/details/109693257