A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安玉波 中级黑马   /  2013-3-8 00:45  /  1719 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、服务端向客户端发送请求        代码如下:
  1. public Form1()
  2.         {
  3.             InitializeComponent();
  4.             TextBox.CheckForIllegalCrossThreadCalls = false;//关闭跨线程修改控件检查
  5.         }

  6.         Socket sokWatch = null;//负责监听 客户端 连接请求的 套接字
  7.         Thread threadWatch = null;//负责调用套接字,执行  监听请求的线程

  8.         //开始监听按钮
  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             //实例化 套接字 (ip4寻址协议,流式传输,TCP协议)
  12.             sokWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  13.             //创建IP对象
  14.             IPAddress address = IPAddress.Parse(txtIp.Text.Trim());
  15.             //创建网络节点对象 包含 ip和port
  16.             IPEndPoint endPoint = new IPEndPoint(address, int.Parse(txtPort.Text.ToString().Trim()));
  17.             //将 监听套接字 绑定到 对应的IP和端口
  18.             try
  19.             {
  20.                 sokWatch.Bind(endPoint);
  21.             }
  22.             catch (Exception ex)
  23.             {
  24.                 txtShow.AppendText("异常:"+ex);
  25.                 return;
  26.             }
  27.             //设置 监听队列 长度为10(同时能处理10个连接请求)
  28.             sokWatch.Listen(10);
  29.             threadWatch = new Thread(StartWatch);
  30.             threadWatch.IsBackground = true;
  31.             threadWatch.Start();
  32.             txtShow.AppendText("启动服务成功!\r\n");
  33.         }

  34.         Socket sokMsg = null;//负责与该客户端套接字通信的套接字
  35.         bool isWatch = true;

  36.         void StartWatch()
  37.         {
  38.             while (isWatch)
  39.             {
  40.                 //监听 客户端 连接请求 ,但是,它会阻断当前线程
  41.                 sokMsg = sokWatch.Accept();//监听到请求,立即创建负责与该客户端套接字通信的套接字
  42.                 txtShow.AppendText("接受连接成功!\r\n");
  43.             }
  44.         }
  45.         //发送信息  到指定的客户端
  46.         private void btnSendNews_Click(object sender, EventArgs e)
  47.         {
  48.             byte[] arrMsg = System.Text.Encoding.UTF8.GetBytes(txtInput.Text.Trim());//把字符串 转换成 字节
  49.             sokMsg.Send(arrMsg);//发送信息
  50.             txtShow.AppendText("我说:" + txtInput.Text.Trim()+"\r\n");
  51.         }
复制代码

1 个回复

倒序浏览
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马