美文网首页
实现简单的TCP连接

实现简单的TCP连接

作者: 小骄傲999 | 来源:发表于2020-08-18 15:05 被阅读0次

1.服务器端

//new一个Socket对象

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

//绑定本机IP地址

IPAddress ipAddress = IPAddress.Parse("127.0.0.1");

//绑定端口号

IPEndPoint ipEndPoint = new IPEndPoint(ipAddress,88);

//进行绑定

serverSocket.Bind(ipEndPoint);

//开始监听

serverSocket.Listen(0);

//开始接收客户端发来的消息

serverSocket.BeginAccept(AcceptCallBack, serverSocket);

static Message msg = new Message();

static void AcceptCallBack(IAsyncResult ar)

{

    Socket serverSocket = ar.AsyncState as Socket;

    Socket clientSocket = serverSocket.EndAccept(ar);

    //向客户端发送一条消息

    string msgStr = "Hello client!你好....";

    byte[] data = System.Text.Encoding.UTF8.GetBytes(msgStr);

    clientSocket.Send(data);

    clientSocket.BeginReceive(msg.Data, msg.StartIndex, msg.RemainSize, SocketFlags.None, ReceiveCallBack, clientSocket);

    serverSocket.BeginAccept(AcceptCallBack, serverSocket);

}

static byte[] dataBuffer = new byte[102400];

static void ReceiveCallBack(IAsyncResult ar)

 {

     Socket clientSocket = null ;

      try

      {

           clientSocket = ar.AsyncState as Socket;

           int count = clientSocket.EndReceive(ar);//

           if (count == 0)

           {

                    clientSocket.Close();

                    return;

           }

           msg.AddCount(count);

           //string msgStr = Encoding.UTF8.GetString(dataBuffer, 0, count);

           //Console.WriteLine("从客户端接收到数据:"+ msgStr);

           msg.ReadMessage();

           //clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);

            clientSocket.BeginReceive(msg.Data, msg.StartIndex, msg.RemainSize, SocketFlags.None, ReceiveCallBack, clientSocket);

     }

     catch (Exception e)

     {

        Console.WriteLine(e);

         if (clientSocket != null)

         {

              clientSocket.Close();

         }

    }

 }

2,客户端

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

clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 88));

byte[] data = new byte[1024];

int count = clientSocket.Receive(data);

string msg = Encoding.UTF8.GetString(data, 0, count);

Console.Write(msg);

byte[] dataBytes = Encoding.UTF8.GetBytes("你好");

int dataLength = dataBytes.Length;

byte[] lengthBytes = BitConverter.GetBytes(dataLength);

byte[] newBytes = lengthBytes.Concat(dataBytes).ToArray();

clientSocket.Send(newBytes);

相关文章

网友评论

      本文标题:实现简单的TCP连接

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