我已经可以把服务器和客户端连接在一起了,但是不知道该如何实现客户端发消息,其他客户端也可以收到这样。
请问这要如何实现呢?

解决方案 »

  1.   

    给你一个tcp发送和接收的例子吧
    服务端:
    Thread myThread;
    private void button1_Click(object sender, EventArgs e)
            {
                myThread = new Thread(new ThreadStart(BeginListen));
                myThread.Start(); 
            }        private void button2_Click(object sender, EventArgs e)
            {
                myThread.Abort();
                Application.ExitThread();
            }        private void BeginListen()
            {
                Control.CheckForIllegalCrossThreadCalls = false;
                IPAddress Server_Ip = GetServer_IP();
                IPEndPoint ip = new IPEndPoint(Server_Ip, System.Convert.ToInt32(textBox1.Text.ToString()));
                Socket Socket_IP = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                Socket_IP.Bind(ip);
                while (true)
                {
                    try
                    {
                        Socket_IP.Listen(5);
                        Socket Socket_Listen = Socket_IP.Accept();
                        byte[] byteMsg = new byte[1024];
                        int msg = Socket_Listen.Receive(byteMsg);
                        listBox1.Items.Add("Recive: " + Encoding.Default.GetString(byteMsg, 0, msg) + " " + DateTime.Now + "");
                        byte[] msgx = Encoding.Default.GetBytes(textBox2.Text);
                        Socket_Listen.Send(msgx);
                    }
                    catch (SocketException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }        private static IPAddress GetServer_IP()
            {            IPHostEntry ipDns = Dns.GetHostByName(Dns.GetHostName());
                return ipDns.AddressList[0];
            } 
        }接收端:
    Socket mysocket;
    private void button1_Click(object sender, EventArgs e)
            {
                textBox4.Text = "";
                string ip_bj = Get_IP();
                try
                {
                    IPEndPoint hostEP = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));
                    Socket mysocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    try
                    {
                        mysocket.Connect(hostEP);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("连接错误\n\r" + ex.Message);
                        return;
                    }
                    byte[] msgx = Encoding.Default.GetBytes(textBox3.Text);
                    try
                    {
                        mysocket.Send(msgx);
                    }
                    catch
                    {
                        MessageBox.Show("发送错误");
                    }
                    byte[] bytes = new byte[1024];
                    int bytesRead = mysocket.Receive(bytes);
                    textBox4.Text = Encoding.Default.GetString(bytes, 0, bytesRead);
                    mysocket.Shutdown(SocketShutdown.Both);
                    mysocket.Close();
                }
                catch (Exception ex)
                {
                    //mysocket.Shutdown(SocketShutdown.Both);
                    //mysocket.Close();
                }
            }        private string Get_IP()
            {
                IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
                return addressList[0].ToString();
            }
        }