首页 > 代码库 > socket实例

socket实例

//服务器端

//服务器端using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net.Sockets;using System.Net;using System.Threading;namespace Server{    public partial class Form1 : Form    {        Socket socketSend;        public Form1()        {            InitializeComponent();            CheckForIllegalCrossThreadCalls = false;        }        //监听        private void button1_Click(object sender, EventArgs e)        {            Socket socketWatch = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);            IPAddress ip = IPAddress.Any;            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(this.txtPort.Text));            socketWatch.Bind(point);            ShowMsg("监听成功");            //监听            socketWatch.Listen(10);            //使用线程不断监听            Thread thread = new Thread(Listen);            thread.IsBackground = true;            thread.Start(socketWatch);        }        //发送信息        private void button2_Click(object sender, EventArgs e)        {            string msg = this.txtMsg.Text.Trim();            byte[] buffer = Encoding.UTF8.GetBytes(msg);            socketSend.Send(buffer);        }                //监听客户端socket        void Listen(object o)        {            Socket socketWatch = o as Socket;            while (true)            {                //等待客户端的连接 并且创建一个负责通信的Socket                socketSend = socketWatch.Accept();                ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功");                 //接受客户端发送的信息                Thread thread = new Thread(Receive);                thread.IsBackground = true;                thread.Start(socketSend);            }        }        void Receive(object o)        {            Socket socketSend = o as Socket;            while (true)            {                                byte[] buffer = new byte[1024 * 1024 * 2];                int r = socketSend.Receive(buffer);                if (r == 0)                {                    break;                }                string msg = Encoding.UTF8.GetString(buffer,0,r);                ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + msg);            }        }        void ShowMsg(string msg)        {            txtLog.AppendText(msg+"\r\n");        }                }}

//客户端

//客户端using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net.Sockets;using System.Net;using System.Threading;namespace Client{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            CheckForIllegalCrossThreadCalls = false;        }        Socket socketSend;        private void button1_Click(object sender, EventArgs e)        {            socketSend = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);            //获取服务器ip            IPAddress ip = IPAddress.Parse(txtIp.Text.Trim());            //获取端口号            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text.Trim()));            //连接服务器            socketSend.Connect(point);            //开启一个线程不断接受服务器端发送过来的信息            Thread thread = new Thread(Receive);            thread.IsBackground = true;            thread.Start();        }        /// <summary>        /// 接受服务端发送的信息        /// </summary>        void Receive()        {                        while (true)            {                byte[] buffer = new byte[1024 * 1024 * 2];                int r = socketSend.Receive(buffer);                if (r == 0)                {                    break;                }                string msg = Encoding.UTF8.GetString(buffer, 0, r);                ShowMsg(socketSend.RemoteEndPoint + ":" + msg);                            }        }        /// <summary>        /// 客服端向服务器端发送信息        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button2_Click(object sender, EventArgs e)        {            string msg = this.txtMsg.Text.Trim();            byte[] buffer = Encoding.UTF8.GetBytes(msg);            socketSend.Send(buffer);        }        void ShowMsg(string msg)        {            txtLog.AppendText(msg + "\r\n");        }    }}

 

socket实例