相父

匆匆,那些年,那些人,那些事,珍惜身边的她

 

一)客户端开发

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 mys
{
    public partial class Form1 : Form
    {
        public delegate void deleg(string netmessage);//声明一个委托
        public Form1()
        {
           
            InitializeComponent();
        }
        public void setText(string netmessage)
        {
           
            richTextBox1.AppendText(netmessage);

        }
        private void receive() {     //网络中接受数据
            try
            {
                while (check)
                {
                    Byte[] rec = new Byte[64];
                    NetworkStream netstream = new NetworkStream(connectsock);
                    netstream.Read(rec, 0, rec.Length);
                    string recmessage = System.Text.Encoding.BigEndianUnicode.GetString(rec);
                   // MessageBox.Show(recmessage);
                    Invoke(new deleg(setText), recmessage);
                }
            }
            catch (Exception ee) { MessageBox.Show(ee.Message); }
}
        private void button1_Click(object sender, EventArgs e)  //获得连接,并启动线程
        {
            try
            {
                myip = IPAddress.Parse(textBox1.Text);
            }
            catch { MessageBox.Show("ip error"); }
            try {
                myserver = new IPEndPoint(myip,Int32.Parse(textBox2.Text));
                connectsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                connectsock.Connect(myserver);
                textBox3.AppendText("success");
                Thread thread = new Thread(new ThreadStart(receive));
                thread.Start();


            }
            catch (Exception ee) { MessageBox.Show(ee.Message); }
        }

        private void button3_Click(object sender, EventArgs e)    //关闭连接
        {
            try {
                connectsock.Close();
                textBox3.AppendText("stop");
            }
            catch { MessageBox.Show("invalid connect"); }
           
        }

        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("invalid connect"); }

        }
      
    }
}

 

 

 

 

 

 

二)服务器开发

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 myc
{
    public partial class Form1 : Form
    {
        private IPAddress myip = IPAddress.Parse("127.0.0.1");//ip
        private IPEndPoint myserver; //ip+port
        private Socket sock; //socket
        private bool check = true;
        private Socket accsock;
        public delegate void deleg(string netmessage);//声明一个委托
        public delegate void deleg2();//声明一个委托
        public Form1()
        {
            InitializeComponent();
        }
        public void setText(string netmessage)   //deleg委托触发的事件
        {
            richTextBox1.AppendText(netmessage + "/r/n");

        }
        public void setText2() {                //deleg2委托触发的事件
            textBox3.AppendText("ip:"+textBox1.Text+"port:"+textBox2.Text);
        }
         private void accp() {                //线程调用的方法,包括接收、监听触发;
             try
             {
                 myserver = new IPEndPoint(myip, Int32.Parse(textBox2.Text));
                 sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//socket定义
                 sock.Bind(myserver);//socket绑定服务器
                 sock.Listen(50);//最大连接数

                 button1.BeginInvoke(new deleg2(setText2));//监听按钮触发事件
                
                 while (true)
                 {
                     accsock = sock.Accept();
                     if (accsock.Connected)
                     {
                         //textBox3.AppendText("build  connect ");
                         while (check)              //从网络中接受数据
                         {
                             Byte[] rec = new Byte[64];
                             NetworkStream netstream = new NetworkStream(accsock);
                             netstream.Read(rec, 0, rec.Length);
                             string recmessage = System.Text.Encoding.BigEndianUnicode.GetString(rec);
                             Invoke(new deleg(setText), recmessage);
                            
                         }
                     }
                 }
             }
             catch(Exception e){MessageBox.Show(e.Message);}
                 }
        private void button1_Click(object sender, EventArgs e)
        {
          
            try
            {
                myip = IPAddress.Parse(textBox1.Text);
            }
            catch { MessageBox.Show("ip error");}
            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);
        }
        catch { MessageBox.Show("not build connect"); }
        }

        private void button3_Click(object sender, EventArgs e)//停止连接
        {
            try { sock.Close();
            textBox3.AppendText("stop");

        }
        catch { MessageBox.Show("invalid stop"); };
        }

    }
}

 

posted on 2008-12-03 09:08  相父  阅读(134)  评论(0)    收藏  举报