WPF实现Socket通信

什么是Socket呢?
Socket是应用层与TCP/IP协议通信的中间的抽象层,它是一组接口。在设计模式中Socket把复杂的TCP/IP协议隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。就比如电话机可以同时拿来拨打或者接听,但对Socket来说拨打或者监听是有区别的。
先来说清楚接听套接字创建过程。

  • 安装电话机(调用socket函数)
  • 通过绑定电话号码进行通话(调用bind函数)
  • 只有连接电话线之后才能进行通话(调用Listen函数)
  • 拿起话筒进行通话(调用accept函数)

网络编程中接受连接请求套接字创建过程如下

  • 调用socket函数创建套接字
  • 调用bind函数分配IP地址和端口号
  • 调用listen函数转为可接受请求状态
  • 调用accept函数受理连接请求

打电话套接字创建过程比较简单直接进行说明

  • 调用Socket函数创建套接字
  • 调用connection向服务器发送请求

通过上面讲解可以了解程序分为两大部分,第一部分创建服务器,第二部分创建客户端。
客户端界面如下:
在这里插入图片描述
服务器端界面如下
在这里插入图片描述
在这里说明程序实现的功能:客户端可以向服务器发送消息,服务器可以向指定的客户端发送消息,实现通信。
在显示代码之前说明重要的步骤:

  1. 服务器通过死循环不停接受从客户端发来的消息。
  2. 只有UI线程才可以操控UI元素。

服务器端代码如下

namespace Sever
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        static List<Socket> sockets = new List<Socket>();
        public MainWindow()
        {     
            InitializeComponent();
        }
        //监听客户端发来的请求 socketWatch为监听 secketSend为通信
        Socket socketSend;
        //根据IP地址寻扎Socket
        Dictionary<string, Socket> disSocket = new Dictionary<string, Socket>();    

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try { 
            IPAddress ip = IPAddress.Any;
            //当开始监听时候,在服务器创建一个负责IP地址跟端口号的Socket
            Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
            //监听
            socketWatch.Bind(point);
            ShowMsg("监听成功");
            socketWatch.Listen(10);


            Thread th = new Thread(ListenClickConnect);
            th.IsBackground = true;
            th.Start(socketWatch);
            }
            catch { }
        }
        publi
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值