如何编写全球,就是怎样连接两台电脑的服务器进行聊天?

解决方案 »

  1.   

    获取两台电脑的IP 然后设置端口就行了 聊天的话 用Socket实现
      

  2.   

    服务器端的同步SOCKET代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    namespace _0111109
    {
        public partial class Form1 : Form
        {
            private IPAddress myIP = IPAddress.Parse("127.0.0.1");
            private IPEndPoint MyServer;
            private Socket sock;
            private bool check=true;
            private Socket accSock;
            public Form1()
            {
                InitializeComponent();
            }
            private void accp()
            {
                MyServer=new IPEndPoint(myIP,Int32.Parse(textBox2.Text));
                sock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                sock.Bind(MyServer);
                sock.Listen(50);
                MessageBox.Show("成功开监听");
            //    textBox3.AppendText("主机"+textBox1.Text+"端口"+textBox2.Text+"开始监听.....\r\n");
                while (check)
                {
                accSock = sock.Accept();
                if (accSock.Connected)   // 
                {
                    textBox3.AppendText("与客户建立连接,");
                    Thread thread = new Thread(new ThreadStart(round));
                    thread.Start();
                 
                        byte[] Rec=new byte[64];
                        NetworkStream netStream=new NetworkStream(accSock);
                        netStream.Read(Rec,0,Rec.Length);
                        string RecMessage=
                            System.Text.Encoding.BigEndianUnicode.GetString(Rec);
                        richTextBox1.AppendText(RecMessage+"\r\n");
                    }
                }        }
            private void round()
            {
                while (true)
                {
                    byte[] Rec = new Byte[64];
                    NetworkStream netStream = new NetworkStream(accSock);
                    netStream.Read(Rec, 0, Rec.Length);
                    String RecMessage =
                        System.Text.Encoding.BigEndianUnicode.GetString(Rec);
                    richTextBox1.AppendText(RecMessage + "\r\n");
                }
            }
            private void Form1_Load(object sender, EventArgs e)
            {        }        private void textBox3_TextChanged(object sender, EventArgs e)
            {        }        private void label1_Click(object sender, EventArgs e)
            {        }        private void richTextBox1_TextChanged(object sender, EventArgs e)
            {        }        private void label4_Click(object sender, EventArgs e)
            {        }        private void label5_Click(object sender, EventArgs e)
            {        }        private void button1_Click(object sender, EventArgs e)
            {        }        private void button3_Click(object sender, EventArgs e)
            {
                try
                {sock.Close();
                    textBox3.AppendText("主机"+textBox1.Text+"端口"+textBox2.Text+"监听停止!\r\n");
                }
                catch{MessageBox.Show("监听尚未开始,关闭无效!");}        }        private void button1_Click_1(object sender, EventArgs e)
            {
                try
                {
                    myIP = IPAddress.Parse(textBox1.Text);
                }
                catch { MessageBox.Show("您输入的IP地址格式下正确,请重新输入!"); }
                try
                {
                    Thread thread = new Thread(new ThreadStart(accp));
                    thread.Start();
                }
                catch (Exception ee) { textBox3.AppendText(ee.Message); }
            }        private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    byte[] sendByte = new byte[64];
                    String send = richTextBox2.Text + "\r\n";
                    NetworkStream netStream = new NetworkStream(accSock);
                    sendByte = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
                    netStream.Write(sendByte, 0, sendByte.Length);
                 //   netStream.Flush();
                }
                catch { MessageBox.Show("连接尚未建立!无法发送!!!"); }
            }
        }
    }
      

  3.   

    客户端的代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
    namespace _01111092
    {
        public partial class Form1 : Form            //  partial
        {
            private IPEndPoint MyServer;
            private Socket connectSock;
            private bool check = true;
            private IPAddress myIP = IPAddress.Parse("127.0.0.1");
            public Form1()
            {
                InitializeComponent();
            }
            private void receive()
            {
                while (true)
                {
                    byte[] Rec = new Byte[64];
                    NetworkStream netStream = new NetworkStream(connectSock);
                    netStream.Read(Rec, 0, Rec.Length);
                    String RecMessage =
                    System.Text.Encoding.BigEndianUnicode.GetString(Rec);
                    richTextBox1.AppendText(RecMessage + "\r\n");
                }
              
            }
            private void Form1_Load(object sender, EventArgs e)
            {        }        private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    myIP = IPAddress.Parse(textBox1.Text);
                }
                catch { MessageBox.Show("输入的IP地址格式不正确,请重新输入!"); }
                try
                {
                    MyServer=new IPEndPoint(myIP,Int32.Parse(textBox2.Text));
                    connectSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    connectSock.Connect(MyServer);
                    textBox3.AppendText("与主机" + textBox1.Text + "端口" + textBox2.Text + "连接成功!\r\n");
                    Thread thread=new Thread(new ThreadStart(receive));
                    thread.Start();
                }
                catch(Exception ee){MessageBox.Show(ee.Message);}
            }        private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    byte[] sendByte = new byte[64];
                    String send = richTextBox2.Text + "\r\n";
                    NetworkStream netStream = new NetworkStream(connectSock);
                    sendByte = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
                    netStream.Write(sendByte, 0, sendByte.Length);
                    netStream.Flush();
                }
                catch { MessageBox.Show("连接尚未建立!无法发送!!!"); }
            }        private void button3_Click(object sender, EventArgs e)
            {
                try
                {
                   connectSock.Close();
                  //  this.Close();
                    textBox3.AppendText("与主机" + textBox1.Text + "端口" + textBox2.Text + "断开连接!\r\n");
                }
                catch { MessageBox.Show("连接尚未建立,断开无效"); }
            }
           
            
        }
    }