当前位置:编程学习 > C#/ASP.NET >>

.net用sock通讯

请问下哪位大哥有.net做的sock通讯  只要能实现两台电脑互相通信就可以了。我想在源码作参考谢谢..如果有愿帮助小弟的大哥。大姐。请加我QQ。。在线等394858307谢谢.有要求也可以提的。 --------------------编程问答-------------------- 网上多的是。随便搜。 --------------------编程问答-------------------- 你有打这些字的时间,都能搜到并运行了 --------------------编程问答-------------------- UP/// --------------------编程问答-------------------- MSDN --------------------编程问答--------------------
引用 4 楼 cyl_java 的回复:
MSDN

Up --------------------编程问答-------------------- 不知道 --------------------编程问答-------------------- MSDN就有了 --------------------编程问答-------------------- UP. --------------------编程问答-------------------- 客户机
namespace WindowsApplication0129
{
    
    public partial class Form1 : Form
    {
        public delegate void myeventhandler( string str);
        private Socket client;
        private byte[]data=new byte[1024];
        public Form1()
        {
            InitializeComponent();
        }


        public  void SetLabelText(string str)
        {
            label1.Text=str;
        }
        public void AddListBoxItems( string str)
        {
            listBox1.Items.Add(str);
        }
        private void button1_Click(object sender, EventArgs e)//连接...
        {
            label1.Text = "connecting...";
            Socket network = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("202.194.147.198"), 9050);
            network.BeginConnect(iep, new AsyncCallback(Connected), network);

        }
        void Connected(IAsyncResult iar)
        {
            client = (Socket)iar.AsyncState;

            try
            {
                client.EndConnect(iar);
                string str = "connected to:" + client.RemoteEndPoint.ToString();
                label1.Invoke(new myeventhandler(SetLabelText), new object[] { str });
                client.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(ReceiveData), client);

            }
            catch (SocketException)
            {
                label1.Invoke(new myeventhandler(SetLabelText), new object[] { "errror connected!" }); 

            }
        }
        void ReceiveData(IAsyncResult iar)
        {
            Socket remote = (Socket)iar.AsyncState;
            try
            {
                int recv = remote.EndReceive(iar);
                string str = Encoding.ASCII.GetString(data, 0, recv);
                listBox1.Invoke(new myeventhandler(AddListBoxItems), new object[] { str });
            }
            catch (ObjectDisposedException)//发送为空,回送为空,endrecerve()没有完成,就client.close()
            {
                label1.Invoke(new myeventhandler(SetLabelText), new object[] { "receive interrupted" });
                
            }
            catch (SocketException)//发送为空,回送为空,等待时server关闭
            {
                label1.Invoke(new myeventhandler(SetLabelText), new object[] { "server off" });
            }
 
        }


  //send...
        private void button3_Click(object sender, EventArgs e)
        {

            byte[] data1 = new byte[1024];
            data1 = Encoding.ASCII.GetBytes(textBox1.Text);
            try
            {
                client.BeginSend(data1, 0, data1.Length, SocketFlags.None, new AsyncCallback(SendData), client);
            }
            catch (NullReferenceException)//套接字还未建立时发送
            {
                label1.Text = "unable to send";
            }
            catch (SocketException)//没有服务器时发送
            {
                label1.Text = "unable to send";
            }
            catch (ObjectDisposedException)//client.close()后发送
            {
                label1.Text = "unable to send";
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            //data = Encoding.ASCII.GetBytes( label1.Text);
        }
        void SendData(IAsyncResult iar)
        {
            Socket remote = (Socket)iar.AsyncState;
            remote.EndSend(iar);
            //remote.BeginReceive(data, SocketFlags.None, new AsyncCallback(ReceiveData), remote);
            remote.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(ReceiveData), remote);
        }

        private void button2_Click(object sender, EventArgs e)
        {
    
            try
            {
                client.Shutdown(SocketShutdown.Send);
                client.Close();
            }
            catch
            {
                label1.Text = "disconnected";
            }
            label1.Text = "disconnected";
        }
    }
} --------------------编程问答-------------------- 服务器
namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public delegate  void myeventhandler(string str);
        public void SetTextBoxText(string str)
        {
            if (str == " ")
                textBox1.Clear();
            else
            textBox1.Text=str;
        }
        public void AddListBoxItems(string str)
        {
            listBox1.Items.Add(str);
        }
        private byte[] data = new byte[1024];
        private Socket s;
        public Form1()
        {
            InitializeComponent();
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
            s.Bind(ipep);
            s.Listen(10);
            s.BeginAccept(new AsyncCallback(Accept), s);
        }
        public void Accept(IAsyncResult iar)
        {
            Socket s1 = (Socket)iar.AsyncState;
            Socket server= s1.EndAccept(iar);
            string str = "connected to:" + server.RemoteEndPoint.ToString();
            textBox1.Invoke(new myeventhandler(SetTextBoxText), new object[] { str });
            string str1 = "welcome to my server";
            byte[] data1 = new byte[1024];
            data1=Encoding.ASCII.GetBytes(str1);
            server.BeginSend(data1, 0, data1.Length, SocketFlags.None, new AsyncCallback(SendData), server);
        }
        public void SendData(IAsyncResult iar)
        {
            Socket server = (Socket)iar.AsyncState;
            server.EndSend(iar);
            server.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(ReceiveData), server);
        }
        public void ReceiveData(IAsyncResult iar)
        {
            Socket server = (Socket)iar.AsyncState;
            try
            {
                int recv = server.EndReceive(iar);
                if (recv == 0)
                {
                    server.Close();
                    textBox1.Invoke(new myeventhandler(SetTextBoxText), new object[] { " " });
                    s.BeginAccept(new AsyncCallback(Accept), s);
                    return;
                }
                string str = Encoding.ASCII.GetString(data, 0, recv);
                listBox1.Invoke(new myeventhandler(AddListBoxItems), new object[] { str });
                server.BeginSend(data, 0, recv, SocketFlags.None, new AsyncCallback(SendData), server);
            }
            catch (SocketException)
            {
                server.Close();
                s.BeginAccept(new AsyncCallback(Accept), s);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

    }
} --------------------编程问答-------------------- 这个帖子没意义 --------------------编程问答-------------------- 我在网上找了几个...但是都不是自己想要的... --------------------编程问答-------------------- 一个简单的。。效果达不到。。复杂的呢。又看不懂
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,