服务端代码:
class Program
{
static void Main(string[] args)
{
const int BufferSize = 8192;//缓存大小8192字节,可以存4096个汉字
Console.WriteLine("Sever is running");
IPAddress ip = IPAddress.Parse("127.0.0.1");//获取ip址
TcpListener listener = new TcpListener(ip,8500);
listener.Start();//开始监听
Console.WriteLine("Start Listening");
//do
//{
//获取一个连接,中断方法
TcpClient remoteClient = listener.AcceptTcpClient();
//打印连接的客户端信息
Console.WriteLine("Client Connected!{0}<--{1}",remoteClient.Client.LocalEndPoint,remoteClient.Client.RemoteEndPoint);
//获取流,并写入buffer中
NetworkStream streamToClient = remoteClient.GetStream();
byte[] buffer = new byte[BufferSize];
int bytesRead = streamToClient.Read(buffer,0,BufferSize);//一直等待客户端传信息
Console.WriteLine("Reading data,{0} bytes..",bytesRead);
//获得请求的字符串
string msg = Encoding.Unicode.GetString(buffer,0,bytesRead);
Console.WriteLine("Received:{0}", msg);
//转换成大写并发送
msg = msg.ToUpper();
buffer = Encoding.Unicode.GetBytes(msg);
lock (streamToClient)
{
streamToClient.Write(buffer,0,buffer.Length);
}
Console.WriteLine("Send:{0}",msg);
//} while (true);
Console.WriteLine("\n\n输入\"Q\"键退出。");
ConsoleKey key;
do
{
key = Console.ReadKey(true).Key;
} while (key != ConsoleKey.Q);
}
}
客户端代码:
class Program
{
static void Main(string[] args)
{
const int BufferSize = 8192;
Console.WriteLine("Client Running...");
TcpClient client;
for (int i = 0; i < 5; i++)
{
try
{
client = new TcpClient();
client.Connect("localhost", 8500);//与服务器连接
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return;
}
//打印连接到的服务器信息
Console.WriteLine("Serevr Connect! {0}--->{1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
NetworkStream streamToServer = client.GetStream();
ConsoleKey key;
Console.WriteLine("Menu:S-Send,X-Exit");
do
{
key = Console.ReadKey(true).Key;
if (key==ConsoleKey.S)
{
//获取输入的信息字符串
Console.WriteLine("输入信息");
string msg = Console.ReadLine();
//发送信息
byte[] buffer = Encoding.Unicode.GetBytes(msg);
streamToServer.Write(buffer,0,buffer.Length);
Console.WriteLine("Sent:{0}",msg);
int bytesRead;
buffer = new byte[BufferSize];
lock (streamToServer)
{
bytesRead = streamToServer.Read(buffer,0,BufferSize);
}
msg = Encoding.Unicode.GetString(buffer,0,bytesRead);
Console.WriteLine("Received:{0}",msg);
}
} while (key !=ConsoleKey.X);
}
// 按Q退出
Console.WriteLine("\n\n输入\"Q\"键退出");
ConsoleKey keys;
do
{
keys = Console.ReadKey(true).Key;
} while (keys != ConsoleKey.Q);
}
}