zoukankan      html  css  js  c++  java
  • 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+"
    ");
            }
    
           
         
        }
    }

    //客户端

    //客户端
    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 + "
    ");
            }
        }
    }
  • 相关阅读:
    设计模式---适配器模式
    【面经】2019-4-1 杭州边锋网络面经
    web前端基础——jQuery编程进阶
    web前端基础——jQuery编程基础
    web前端基础——初识HTML DOM编程
    web前端基础——初识JavaScript
    web前端基础——初识CSS
    web前端基础——初识HTML
    CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决
    Python中常用技巧整理
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/4119724.html
Copyright © 2011-2022 走看看