📄 server.cs
字号:
using System;
using System.Drawing;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net.Sockets;
using System.IO;
using System.Net;
using System.Threading;
namespace SQServer
{
public partial class Server : Form
{
private TcpListener objTcpListener;
private List<TcpClient> sockets = new List<TcpClient>();
private NetworkStream objNetworkStream;
private StreamReader objStreamReader;
private StreamWriter objStreamWriter;
public Server()
{
InitializeComponent();
}
private void Server_Load(object sender, EventArgs e)
{
Server.CheckForIllegalCrossThreadCalls = false;
}
private void button1_Click(object sender, EventArgs e)
{
//获取本地的IP地址组
IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
//建立了一个侦听端口
objTcpListener = new TcpListener(ips[0], 7788);
//开始侦听
objTcpListener.Start();
MessageBox.Show("服务器已启动");
Thread thread = new Thread(new ThreadStart(this.StartServer));
thread.Start();
}
private void StartServer()
{
while (true)
{
//等待客户端连接过来,是阻塞状态
TcpClient tc = objTcpListener.AcceptTcpClient();
sockets.Add(tc);
//获得和本地侦听端口通讯的远方电脑的IP地址和端口
IPEndPoint ipe = (IPEndPoint)tc.Client.RemoteEndPoint;
this.listBox1.Items.Add(ipe.Address.ToString() + ":" + ipe.Port.ToString());
}
}
public string Reader(TcpClient tc)
{
//从连接好的连接中获取一个流
objNetworkStream = tc.GetStream();
//根据流,构造了一个文本读取器
objStreamReader = new StreamReader(objNetworkStream);
string str = null;
//显示收到的数据
while (objStreamReader.Peek() > 0)
{
//读取一行信息
str += objStreamReader.ReadLine();
}
//objStreamReader.Close();
return str;
}
public void Writer(TcpClient tc,string str)
{
//从连接好的连接中获取一个流
objNetworkStream = tc.GetStream();
//根据网络数据流构造一个文本写入器
objStreamWriter = new StreamWriter(objNetworkStream);
objStreamWriter.WriteLine(str);
objStreamWriter.Flush();
//objStreamWriter.Close();
}
private void Reader()
{
for (int j = sockets.Count - 1; j > -1; j--)
{
if (!sockets[j].Connected)
{
sockets.RemoveAt(j);
continue;
}
if (sockets[j].Available > 0)
{
string str = Reader(sockets[j]);
//IPEndPoint ipe = (IPEndPoint)sockets[j].Client.RemoteEndPoint;
Management(sockets[j],str);
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Reader();
}
private void Management(TcpClient tc, string str)
{
string[] split = str.Split(':');
if(split[0].Equals("0000")){
Writer(tc,Registation(split));
}
}
private string Registation(string[] strs)
{
MessageBox.Show("用户名" + strs[1] + "\r\n用户密码" + strs[2] + "\r\n头像" + strs[3]);
return "注册成功!";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -