C#socket类初步了解(客户端与服务端的建立)

本文介绍了一个简单的TCP服务器和客户端通信程序实现。服务器监听特定端口并返回当前日期时间给请求的客户端,客户端则连接到服务器并接收该日期时间。

1.建立过程

服务端:

(1)建立socket

2)socket.bind(绑定ip,dns)

3) 建立客户端sock(socke.accetp返回连接的客户端);

4)通信socket.send/recieve(发送/接受客户端信 息),当然还有其他信息传输方法~

5)关闭socket(服务端要实施监控,可以不用关闭

客户端:

1)建立 socket;

2)socket.conect(ip,服务器端口)//连接服务器

 3)通信 socket.send/receive(还有其他方式);

4)关闭(socket.close());

 

/*******************实例**********/

客户端读取服务端的的电脑显示时间

我是建立在控制台上的程序

写的不好 仅供参考;

 

/*******************************/

DateTimeServer.sln

 

server.cs

//

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;

namespace DateTimeServer
{
    class Server
    {
        static void Main(string[] args)
        {
            try
            {
                //
                String hostname = Dns.GetHostName();//获得本机域名
                IPAddress serverIp = Dns.GetHostEntry(hostname).AddressList[0];//本机ip

                //DateTimeServer port =13
                String Port = "13";//端口号设为13


                IPEndPoint serverHost = new IPEndPoint(serverIp, Int32.Parse(Port));

                Socket serverSocket = new Socket(
                    AddressFamily.InterNetwork,
                    SocketType.Stream, ProtocolType.Tcp);


                serverSocket.Bind(serverHost);

                //backlog=50;
                serverSocket.Listen(50);// 设置最大连接客户端50个


                Console.WriteLine("dateTime server started at :" +
                    serverHost.Address.ToString() + ":" + Port);


                ListenClient lc = new ListenClient(serverSocket);

                ThreadStart serverThreadStart = new ThreadStart(lc.ServerThreadPro);
                Thread serverThread = new Thread(serverThreadStart);

                serverThread.Start();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace.ToString());
            }
            finally
            {
            }

        }
    }
}

///

ListenClient.cs

//

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;

namespace DateTimeServer
{
    public class ListenClient
    {
        private System.Net.Sockets.Socket serverSocket;
        private System.Net.Sockets.Socket clientSocket;


        //构造函数
        public ListenClient(Socket serverSocket)
        {
            this.serverSocket = serverSocket;
        }

        public void ServerThreadPro()
        {
            while (true)
            {
                try
                {
                    clientSocket = serverSocket.Accept();

                    IPEndPoint clientInfo = (IPEndPoint)
                    clientSocket.RemoteEndPoint;//获得客户端信息
                    IPEndPoint serverIfo = (IPEndPoint)
                    serverSocket.LocalEndPoint;//获得服务端信息


                    Console.WriteLine("Client: " + clientInfo.Address.ToString() + ":" +
                        clientInfo.Port.ToString());
                    Console.WriteLine("Server:" + serverSocket.AddressFamily.ToString() + ":" +
                        serverIfo.Port.ToString());

                    String strDate = DateTime.Now.ToShortDateString() + "" +
                        DateTime.Now.ToLongTimeString();

                    byte[] byteDate =
                        Encoding.ASCII.GetBytes(strDate.ToCharArray());

                    clientSocket.Send(byteDate, 0, byteDate.Length, SocketFlags.None);//向客户端发送信息

                    Console.WriteLine("to client: " + clientInfo.Address.ToString() +
                        ":" + clientInfo.Port.ToString() + ":" + strDate);

                    clientSocket.Shutdown(SocketShutdown.Both);
                    clientSocket.Close();
                }
                catch(Exception ex){
                    Console.WriteLine(ex.StackTrace.ToString());

                    if (clientSocket.Connected)
                        clientSocket.Close();
                }
            }
        }
    }
}

 

 

客户端:

Client.cs

//using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;

namespace DateTimeClient
{
    class Client
    {
        static void Main(string[] args)
        {
            try
            {
                Socket clientSocket = new Socket(AddressFamily.InterNetwork,
                    SocketType.Stream, ProtocolType.Tcp);
                IPAddress serverIp = IPAddress.Parse("172.19.82.54");
                IPEndPoint serverHost = new IPEndPoint(serverIp, Int32.Parse("13"));

                clientSocket.Connect(serverHost);


                byte[] recvByte = new byte[1024];

                int i = clientSocket.Receive(recvByte, 0, clientSocket.Available, SocketFlags.None);


                string dateTime = Encoding.ASCII.GetString(recvByte, 0, i);

                Console.WriteLine("receive{0}bytes", i);
                Console.WriteLine("current server date/Time:{0}", dateTime);


                clientSocket.Close();
                return;
            }
            catch (Exception ex)
            {
                ex.StackTrace.ToString();
                return;
            }
           
        }
    }
}

内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习智能优化算法结合应用的研究者。; 使用场景及目标:①解决各时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块混合神经网络结构的设计逻辑,通过调整数据集参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值