c# socket网络连接(服务器端)

首先我们需要新建一个socket

  //定义一个Socket
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

这三个参数分别是选择ipv4或者是ipv6,第二个是选择socket传输数据类型 Dgram是数据包UDP协议常用,Stream是数据流,TCP
常用,第三个参数就是选择网络协议类型。

接下来我们开始绑定ip和端口号

IPAddress iPAddress = IPAddress.Parse("192.168.1.5");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 8989);
//绑定ip和端口号
serverSocket.Bind(iPEndPoint);

将你的IP和端口号绑定上去即可

接下来我们就开始监听这个socket连接的状态,如果有通信的话我们就可以进行消息处理

            //开始监听端口号
            serverSocket.Listen(0);
            //接收一个连接
            Socket clientSocket = serverSocket.Accept();
            string msg = "Hellow World! 你好";
            //转换消息
            byte[] data = Encoding.UTF8.GetBytes(msg);
            //发送消息
            clientSocket.Send(data);

Listen这个监听的方法的参数代表等待个数,而不是连接个数,0代表没有等待个数,多少都可以。
然后使用Accept这个方法产生一个新的和客户端连接的socket(如果没有连接,代码会停留在监听的的部分等待,直到有客户端连接才会执行下面的代码)。
后面就是将我们的消息转换成字节流发送给客户端,通过Send()方法,转换字符串这里使用了UTF8的格式GetBytes()方法,这个格式可以转换中文,同样的接受也需要使用UTF8的格式使用GetString()方法接受。

下面我们就要在服务器接收客户端发送的消息了

            //接收消息
            byte[] dataBuffer = new byte[1024];//开辟接收空间
            int count = clientSocket.Receive(dataBuffer);//获取消息的字节长度
            string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);//读取从0开始到字节长度部分的数据,将多余的空白字节踢去

            //输出接收的信息
            Console.WriteLine(msgReceive);

                        //关闭连接
            clientSocket.Close();//关闭和客户端Accept产生的Socket连接
            serverSocket.Close();//关闭自己的Socket连接

完整代码

       /// <summary>
        /// 同步接收数据
        /// </summary>
        void StartSeverSync()
        {
            //定义一个Socket
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //本机ip:192.168.1.5

            //  IPAddress iPAddress = new IPAddress (new byte[] { 192,168,1,5 });
            IPAddress iPAddress = IPAddress.Parse("192.168.1.5");

            IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 8989);
            //绑定ip和端口号
            serverSocket.Bind(iPEndPoint);
            //开始监听端口号
            serverSocket.Listen(0);
            //接收一个连接
            Socket clientSocket = serverSocket.Accept();

            string msg = "Hellow World! 你好";
            //转换消息
            byte[] data = Encoding.UTF8.GetBytes(msg);
            //发送消息
            clientSocket.Send(data);

            //接收消息
            byte[] dataBuffer = new byte[1024];
            int count = clientSocket.Receive(dataBuffer);
            string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);

            Console.WriteLine(msgReceive);
            //关闭连接
            clientSocket.Close();
            serverSocket.Close();
        }

猜你喜欢

转载自blog.csdn.net/qq_41056203/article/details/80895518
今日推荐