C#.net套接字C/S第一步(没测试过,有时间测试接着写第二步)

简介: //客户端发送数据,等待服务器数据并接收 public static string Client(string cparam,int serverStrNum,string StrIp,string StrPort){             /...

//客户端发送数据,等待服务器数据并接收

public static string Client(string cparam,int serverStrNum,string StrIp,string StrPort)
{

            //
            TcpClient tcpclnt = new TcpClient();
            tcpclnt.Connect(StrIp, int.Parse(StrPort));

            //
            NetworkStream stm = tcpclnt.GetStream();

            //

            UTF8Encoding asen = new UTF8Encoding();
            byte[] ba = asen.GetBytes(cparam);
            if (stm.CanWrite)
                stm.Write(ba, 0, ba.Length);
            //
            byte[] bb = new byte[serverStrNum];
            while (stm.Read(bb, 0, serverStrNum).ToString().Trim()=="") { }
            if (stm.DataAvailable)
                stm.Read(bb, 0,serverStrNum);

            //
            string req = System.Text.Encoding.UTF8.GetString(bb);

            //

            stm.Close();
            tcpclnt.Close();
            return req;
}

//服务器类

public class Server
{

                //
                bool ServerRun = true;

                //
                TcpListener tcpListener = null;

                //
                Thread SerTh;

                //
                IPEndPoint SerIpendPoint;

                //

                string[] parameter;
public static string Server(string sparam,string ip,string port)
{

                //
                SerIpendPoint= new IPEndPoint(IPAddress.Parse(ip), Int32.Parse(port));
                tcpListener = new TcpListener(SerIpendPoint);
                tcpListener.Start();

                //
                SerTh = new Thread(new ThreadStart(ServerWorking));
                ServerRun = true;
                SerTh.Start();
}
public bool StopServer()
{
            try
            {
                ServerRun = false;
                tcpListener.Stop();
                SerTh.Abort();
                return (true);
            }
            catch
            {
                return (false);
            }
}
private void ServerWorking()
{
            try
            {
                while (ServerRun)
                {
                    Socket QS;
                    QS = TcpListener.AcceptSocket();
                    Byte[] Stream = new Byte[1024];
                    QS.Receive(Stream);

                    //
                    string clientStr = System.Text.Encoding.UTF8.GetString(Stream);
                    string serverStr = DataConvert(clientStr);

                    //
                    UTF8Encoding SendByte = new UTF8Encoding();
                    QS.Send((SendByte.GetBytes(serverStr)));
                    //string FileUrl;
                    //QS.SendFile(FileUrl);
                    QS.Close();
                }
            }
            catch { }

}

private string  DataConvert(string clientStr);

{

            string serverStr=clientStr;

            return serverStr;

}
        private string[] SplitParam(string str,int ParamNum)
        {
            parameter = new string[ParamNum];//保存接收的参数
            for (int i = 0; i < ParamNum; i++)
            {
                parameter[i] = "";
            }
            int j = 0;//参数指针
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] != ';')
                {
                    if (str[i] == '/0')
                    {
                        break;
                    }
                    parameter[j] += str[i].ToString().Trim();
                }
                else
                {
                    j++;
                }
            }

         return  parameter;
        }
}

 

目录
相关文章
|
6天前
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
55 18
|
4天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
26 11
|
6天前
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
39 13
|
6天前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
38 12
|
6天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
34 10
|
4天前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
|
4天前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
|
4天前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
|
18天前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
35 5
|
27天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
83 13