zoukankan      html  css  js  c++  java
  • c# socket

    好久没有写CS端代码,今天有空复习一下SOCKET。

    功能说明:

    1、服务端向客户端发送信息

    2、客户端向服务端发送信息

    效果如下图:

    服务端代码:

    Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint localPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5000);
                serverSocket.Bind(localPoint);
                serverSocket.Listen(10);
                new Thread(s =>
                {
                    while (true)
                    {
                        Socket clientSocket = ((Socket)s).Accept();
                        clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello"));
                        clients.Add(clientSocket);
                        new Thread((cS) =>
                        {
                            Socket myClientSocket = (Socket)clientSocket;
                            while (true)
                            {
                                try
                                {
                                    byte[] result = new byte[1024 * 1024];
                                    int receiveNumber = myClientSocket.Receive(result);
                                    string realMsg = string.Format("接收客户端{0}消息{1}
    ", myClientSocket.RemoteEndPoint.ToString(), Encoding.Default.GetString(result, 0, receiveNumber));
                                    if (label1.InvokeRequired)
                                    {
                                        label1.BeginInvoke(new Action<string>((msg) =>
                                        {
                                            label1.Text += msg;
                                        }), realMsg);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    if (myClientSocket != null && myClientSocket.Connected)
                                    {
                                        myClientSocket.Shutdown(SocketShutdown.Both);
                                        myClientSocket.Close();
                                    }
                                }
                            }
                        }) { IsBackground = true }.Start(clientSocket);
                    }
                }) { IsBackground = true }.Start(serverSocket);

    客户端代码:

                try
                {
                    socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket.Connect("127.0.0.1", 5000);
                    new Thread((s) =>
                    {
                        Socket cS = (Socket)s;
                        while (true)
                        {
                            byte[] byteMsg = new byte[1024 * 1024];
                            int realResult = cS.Receive(byteMsg);
                            string msg = Encoding.Default.GetString(byteMsg, 0, realResult);
                            if (label1.InvokeRequired)
                            {
                                Action<string> a = (rm) =>
                                {
                                    this.label1.Text += rm + "
    ";
                                };
                                label1.BeginInvoke(a, msg);
                            }
                        }
                    }) { IsBackground = true }.Start(socket);
                    button1.Enabled = false;
                }
                catch (Exception ex)
                {
                    button1.Enabled = true;
                }
  • 相关阅读:
    团队作业(9)
    团队作业(8)
    团队作业(7)
    团队作业(6)
    团队作业(5)
    团队作业(4)
    团队作业(3)
    05数据爬去
    02周总结
    04结对开发
  • 原文地址:https://www.cnblogs.com/tom-zhu/p/3816461.html
Copyright © 2011-2022 走看看