美文网首页
socket 异步通信 TCP服务器客户端实现

socket 异步通信 TCP服务器客户端实现

作者: 王士昂 | 来源:发表于2019-04-21 21:43 被阅读0次

一. TCP服务器的实现

1.创建套接字

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

2.绑定本地终节点

IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6065);

serverSocket.Bind(ep);

3.开启监听

serverSocket.Listen(0);

4.异步接收客户端连接请求

private void AsyncAccept(Socket socket)

{

        socket.BeginAccept(asyncResult =>

        {

            Socket server = asyncResult.AsyncState as Socket;

            //获取客户端套接字

            Socket clientSocket = socket.EndAccept(asyncResult);

            Debug.Log(string.Format("客户端{0}请求连接", clientSocket.RemoteEndPoint));

            Client c = new Client(clientSocket);

            clients.Add(c);

            AsyncReceive(c);

            AsyncAccept(server);

        }, socket);

    }

5.异步接收客户端信息

private void AsyncReceive(Client client)

{

        try

        {

            client.clientSocket.BeginReceive(client.buffer, 0, client.buffer.Length, SocketFlags.None,

            asyncResult =>

            {

                try

                {

                    int length = client.clientSocket.EndReceive(asyncResult);

                    if (length > 0)

                    {

                        string message = Encoding.UTF8.GetString(client.buffer);

                        OnReceiveMessage(message);

                        AsyncReceive(client);

                    }

                    else

                    {

                        //客户端断开

                        OnClientDisconnect(client);

                    }

                }

                catch (SocketException e)

                {

                    Debug.Log(e.Message.ToString());

                    if (client.clientSocket.Connected == false)

                    {

                        OnClientDisconnect(client);

                    }

                }

            }, client.clientSocket);

        }

        catch (Exception e)

        {

            Debug.Log(e.Message.ToString());

        }

}

6.异步向客户端发送信息

private void AsyncSend(Client client, byte[] data)

{

        if (client == null || data.Length == 0) return;

        try

        {

            client.clientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, asyncResult =>

            {

                int length = client.clientSocket.EndSend(asyncResult);

            }, client.clientSocket);

        }

        catch (SocketException e)

        {

            Debug.Log(e.Message.ToString());

            OnClientDisconnect(client);

        }

}

二. TCP客户端的实现

1.创建套接字

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

2.连接到服务器

clientSocket.BeginConnect(dataSourceServerEP, asyncResult =>

 {

            try

            {

                clientSocket.EndConnect(asyncResult);

                Debug.Log(serviceName + ": 连接数据源服务器成功");

                //接收消息

                ReceiveMessageFromServer();

            }

            catch (SocketException e)

            {

                Debug.Log(e.Message.ToString());

                ConnectToDataSourceServer(ip, port);

            }

        }, clientSocket);

相关文章

  • day017 笔记 08-07

    socket套接字 通过socket实现服务器端 通过socket实现客户端 多次通信(服务器端) 多次通信(客户...

  • 读《Python核心编程》第二章

    socket库实现tcp的服务器和客户端 socketserver库实现tcp的服务器和客户端 twisted框架...

  • socket

    socket编程(套接字):指的是通过代码来创建实现通信的两个端(服务器和客户端)。socket一般可以基于TCP...

  • day17-网络编程

    套接字 socket编程:指的就是通过代码来创建实现通信的两个端(服务器和客户端) socket一般可以基于TCP...

  • socket 异步通信 TCP服务器客户端实现

    一. TCP服务器的实现 1.创建套接字 Socket serverSocket = new Socket(Add...

  • socket 异步通信 TCP服务器客户端实现

    一. TCP服务器的实现 1.创建套接字 2.绑定本地终节点 3.开启监听 4.异步接收客户端连接请求 5.异步接...

  • Java学习5-socket通信(2)

    基于TCP协议的socket通信 目标:了解概念,通信模型,实现socket的步骤,服务端和客户端应该做些什么 什...

  • python进阶 Socket

    Socket:(基于TCP、IP协议的网络通信)套接字 基于Socket实现聊天机器人# 客户端import so...

  • Linux C应用编程-6-网络通信

    1.TCP通信 1)TCP进程服务器 2)TCP客户端 2.UDP通信 1)UDP服务器 2)UDP客户端

  • Netty笔记之三:Netty实现Socket编程

    netty实现Tcp Socket编程。 demo实现功能客户端向服务端发送消息,服务器接收到消息后向客户端响应。...

网友评论

      本文标题:socket 异步通信 TCP服务器客户端实现

      本文链接:https://www.haomeiwen.com/subject/pnrsgqtx.html