亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現套接字發送接收數據

發布時間:2022-03-03 15:04:54 來源:億速云 閱讀:185 作者:小新 欄目:開發技術

這篇文章主要介紹了C#如何實現套接字發送接收數據,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體內容如下

服務端

C#如何實現套接字發送接收數據

namespace TestServer
{
    public partial class ServerForm : Form
    {
        Socket socketSend;
        // 將遠程連接的客戶端的IP地址和socket存入集合
        Dictionary<string, Socket> dicSocket = new Dictionary<string, Socket>();
        public ServerForm()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                // 當點擊開始監聽后,在服務器創建一個負責監聽IP地址和端口號的socket
                Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPAddress ip = IPAddress.Any;//;IPAddress.Parse(txtServer.Text)
                IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
                // 監聽
                socketWatch.Bind(point);
                ShowMsg("監聽成功");
                socketWatch.Listen(10);
                Thread th = new Thread(Listen);
                th.IsBackground = true;
                th.Start(socketWatch);
            }
            catch { }
        }

        void Listen(object o)
        {
            // 等待客戶端連接 并創建一個負責通信的Socket
            Socket socketWatch = o as Socket;
            while (true)
            {
                socketSend = socketWatch.Accept();
                dicSocket.Add(socketSend.RemoteEndPoint.ToString(),socketSend);
                cboUsers.Items.Add(socketSend.RemoteEndPoint.ToString());
                ShowMsg(socketSend.RemoteEndPoint.ToString() + " : " + "連接成功");
                Thread th = new Thread(Recive);
                th.IsBackground = true;
                th.Start(socketSend);
            }
        }
        
        void Recive(object o)
        {
            socketSend = o as Socket;
            while (true)
            {
                // 客戶端連接成功后,服務器應接受客戶端發來的消息
                byte[] buffer = new byte[1024 * 1024 * 2];
                // 實際接收到的有效字節數
                int r = socketSend.Receive(buffer);
                if (r == 0)
                {
                    break;
                }
                string str = Encoding.UTF8.GetString(buffer, 0, r);
                ShowMsg(socketSend.RemoteEndPoint + " : " + str);
            }
        }

        

        void ShowMsg(string str)
        {
            txtLog.AppendText(str + "\r\n");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            string str = txtMsg.Text;
            byte[] buffer = Encoding.UTF8.GetBytes(str);
            string ip = cboUsers.SelectedItem.ToString();
            dicSocket[ip].Send(buffer);
            //socketSend.Send(buffer);
            txtMsg.Text = "";
        }

        private void btnSendUser_Click(object sender, EventArgs e)
        {
            string json = JsonConvert.SerializeObject(UserList());
            byte[] buffer = Encoding.UTF8.GetBytes(json);
            socketSend.Send(buffer);
        }

        private List<User> UserList()
        {
            List<User> userList = new List<User>();
            User user = null;
            string sql = "select * from user_table";
            SqlCommand cmd = SqlUtils.ConnectSql(sql);
            SqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {
                user = new User(sdr.GetInt32(0), sdr.GetString(1), sdr.GetString(2), sdr.GetInt32(3));
                userList.Add(user);
            }
            return userList;
        }

    }
}

客戶端

C#如何實現套接字發送接收數據

namespace TestClient
{
    public partial class ClientForm : Form
    {
        Socket socketSend;
        public ClientForm()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                // 創建負責通信的socket
                socketSend = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                IPAddress ip = IPAddress.Parse(txtServer.Text);
                IPEndPoint point = new IPEndPoint(ip,Convert.ToInt32(txtPort.Text));
                socketSend.Connect(point);
                ShowMsg("連接成功");
                Thread th = new Thread(Recive);
                th.IsBackground = true;
                th.Start();
            }
            catch { }
        }

        void Recive()
        {
            while (true)
            {
                // 客戶端連接成功后,服務器應接受客戶端發來的消息
                byte[] buffer = new byte[1024 * 1024 * 2];
                // 實際接收到的有效字節數
                int r = socketSend.Receive(buffer);
                if (r == 0)
                {
                    break;
                }
                string str = Encoding.UTF8.GetString(buffer, 0, r);
                ShowMsg(socketSend.RemoteEndPoint + " : " + str);
            }
        }

        void ShowMsg(string str)
        {
            txtLog.AppendText(str + "\r\n");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            string str = txtMsg.Text.Trim();
            byte[] buffer = Encoding.UTF8.GetBytes(str);
            socketSend.Send(buffer);
            txtMsg.Text = "";
        }
    }
}

效果

C#如何實現套接字發送接收數據

發送json數據

C#如何實現套接字發送接收數據

感謝你能夠認真閱讀完這篇文章,希望小編分享的“C#如何實現套接字發送接收數據”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

刚察县| 金昌市| 方山县| 延庆县| 江阴市| 永州市| 浑源县| 溧阳市| 卢龙县| 藁城市| 咸阳市| 荔波县| 城口县| 永修县| 新营市| 永胜县| 资溪县| 满城县| 荔波县| 大丰市| 博湖县| 扶余县| 巴中市| 开原市| 郑州市| 陆良县| 枣强县| 松江区| 微山县| 合肥市| 随州市| 临邑县| 兰溪市| 木兰县| 女性| 清徐县| 资溪县| 卢湾区| 亳州市| 芮城县| 清新县|