现在的位置: 首页 > 综合 > 正文

C#网络编程(一)——C#开发TCP/IP聊天室

2013年10月07日 ⁄ 综合 ⁄ 共 5486字 ⁄ 字号 评论关闭
实例C#开发TCP/IP聊天室
 

服务器端原代码:

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.Threading;
using System.Net.Sockets;
namespace Win_Talk
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        #region//定义变量
        IPAddress HostIP = IPAddress.Parse("127.0.0.1");
        IPEndPoint point;
        Socket socket;
        bool flag = true;
        Socket acceptedSocket;
        #endregion
        #region//声名委托
        delegate void SetTextCallback(string text);
        private void SetText(string text)
        {
            textBox2.AppendText(text + "/r/n");
        }
        #endregion
        #region//进程方法
        private void Proccess()
        {
            if (acceptedSocket.Connected)
            {
                while (flag)
                {
                    byte[] receiveByte = new byte[64];
                    acceptedSocket.Receive(receiveByte, receiveByte.Length, 0);
                    string strInfo = Encoding.BigEndianUnicode.GetString(receiveByte);
                    this.Invoke(new SetTextCallback(SetText), new object[] { strInfo });
                }
            }
        }
        #endregion
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                socket.Close();
                acceptedSocket.Close();
            }
            catch
            {
            }
            finally
            {
                Close();
            }
        }
        private void button2_Click_1(object sender, EventArgs e)
        {
            try
            {
                Byte[] sendByte = new Byte[64];
                string sendStr = this.textBox1.Text + ":" + this.textBox3.Text + "/r/n";
                sendByte = Encoding.BigEndianUnicode.GetBytes(sendStr.ToCharArray());
                acceptedSocket.Send(sendByte, sendByte.Length, 0);
            }
            catch { }
        }
        private void button1_Click_1(object sender, EventArgs e)
        {
            HostIP = IPAddress.Parse("127.0.0.1");
            try
            {
                point = new IPEndPoint(HostIP, Int32.Parse("11000"));
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Bind(point);
                socket.Listen(50);
                acceptedSocket = socket.Accept();
                Thread thread = new Thread(new ThreadStart(Proccess));
                thread.Start();
            }
            catch (Exception ey)
            {
                MessageBox.Show(ey.Message);
            }
        }
    }
}

客户端程序代码:

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.Threading;
using System.Net.Sockets;
namespace win_talkClient
{
    public partial class Form1 : Form
    {
        #region//声名变量
        IPAddress HostIP = IPAddress.Parse("127.0.0.1");
        IPEndPoint point;
        Socket socket;
        bool flag = true;
        #endregion
       
       #region//声名委托
        delegate void SetTextCallback(string text);
        private void SetText(string text)
        {
           textBox2.AppendText(text + "/r/n");
       }
        #endregion
       #region//进程
       private void Proccess()
        {
            if (socket.Connected)
            {
                while (flag)
                {
                    byte[] receiveByte = new byte[64];
                    socket.Receive(receiveByte, receiveByte.Length, 0);
                    string strInfo = Encoding.BigEndianUnicode.GetString(receiveByte);
                    this.Invoke(new SetTextCallback(SetText),new object[]{strInfo});
                    
                }
            }
        }
       #endregion
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Byte[] sendByte = new Byte[64];
                string sendStr = this.textBox1.Text + ":" + this.textBox3.Text+"/r/n";
                sendByte = Encoding.BigEndianUnicode.GetBytes(sendStr.ToCharArray());
                socket.Send(sendByte, sendByte.Length, 0);

            }
            catch { }
        }
        
        public Form1()
            {
                InitializeComponent();
            }
        private void Form1_Load(object sender, EventArgs e)
            {
            }
         private void button1_Click(object sender, EventArgs e)
            {
                HostIP = IPAddress.Parse("127.0.0.1");
                try
                {
                    point = new IPEndPoint(HostIP, Int32.Parse("11000"));
                    socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket.Connect(point);
                    Thread thread = new Thread(new ThreadStart(Proccess));
                    thread.Start();
                }
                catch(Exception ey)
                {
                    MessageBox.Show("服务器没有开启/r/n"+ey.Message);
                }
            }
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                socket.Close();
            }
            catch
            {
            }
            finally
            {
                Close();
            }
        }
    }
}

抱歉!评论已关闭.