黑马程序员—网络编程笔记

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

 

服务端与客户端之间的通信:

服务端:

1.       启动监听

        a.       创建监听套接字

           sokWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

           //使用ipv4寻址,使用流式套接字,使用Tcp协议

        b.       获取网络节点

           IPAddress address = IPAddress.Parse(txtIP.Text.Trim());

          EndPoint endPoint = new IPEndPoint(IPAddress, port);

       c.       监听套接字绑定到网络节点上

         sokWatch.Bind(endPoint);

      d.       启动监听服务

      sokWatch.Listen();

      e.       创建并开启监听线程

      threadWatch = new Thread(StartWatch);

      threadWatch.Start();

2.       负责监听客户端连接请求 (void StartWatch())

         while (isWatch)

            {

                 //监听到客户端连接请求,会返回一个负责与该客户端通信的新的套接字对象。否则在此阻断线程。

                sokConnection = sokWatch.Accept();

                //获得通信套接字的远程 ip:port

                string strRemoteEndPoint =sokConnection.RemoteEndPoint.ToString();

                //将客户端的ip:port 加入到listBox控件中

                lbClients.Items.Add(strRemoteEndPoint);

                //创建 通信管理类对象

                SocketConnection connection = new SocketConnection(sokConnection, ShowMsg);

                //将通信管理类对象 添加到集合中

                dictConnection.Add(strRemoteEndPoint, connection);

                //立即向 客户端套接字发送一个消息数据

                sokConnection.Send(System.Text.Encoding.Default.GetBytes("Hello~~!"));

            }

3.       向指定客户端发送消息

                tring key = lbClients.Text; //得到listbox中选定的项(客户端Ip端口)

               if (!string.IsNullOrEmpty(key))

            {

                //获得要发送的内容

                string strMsg = txtSend.Text.Trim();

                //通过集合中的键,找到对应通信套接字,来发送数据给对应的客户端

                dictConnection[key].SendMsg(strMsg);

            }

            else

            {

                MessageBox.Show("请选择要发送的客户端.........");

            }

 

4.       群发消息

    //获得要发送的内容

     string strMsg = txtSend.Text.Trim();

   //循环泛型集合中的值

    foreach (SocketConnection value in dictConnection.Values)

    {

                   value.SendMsg(strMsg);

    }

 

5.       向指定客户端发送文件

        a.       选择文件(打开对话框)

        b.       读取文件数据

        c.       发送数据

      using (FileStream fs = new FileStream(filePath, FileMode.Open))

                {

                    //准备一个文件缓冲区

                    byte[] arrFile = new byte[1024 * 1024 * 2];

                    //读取文件数据,获得真实文件长度

                    int length = fs.Read(arrFile, 0, arrFile.Length);

                    //创建一个比读取的文件长度多1位的新数组

                    byte[] arrFileNew = new byte[length + 1];

                    arrFileNew[0] = 1;//设置标识位为1,代表发送的是文件数据

                    //将老数组的数据追加到新数组里

                    Buffer.BlockCopy(arrFile, 0, arrFileNew, 1, length);

                    sokConnection.Send(arrFileNew);

                    dgShowMsg("发送文件成功!”);

                }

 

 

6.       向指定客户端发送闪屏消息

      public void SendShack()

        {

            //准备一个缓冲区

            byte[] arrFile = new byte[1];

            arrFile[0] = 3;

            sokConnection.Send(arrFile);

            dgShowMsg("" + sokConnection.RemoteEndPoint.ToString() + "发送闪屏成功!”);

        }

 

 

客户端:

1.        向服务端 发送连接请求

2.       循环接收服务端发来的数据

3.       显示消息到文本框

4.       向服务器发送消息

5.       闪屏

 

向服务端 发送连接请求:
sokClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //实例化套接字

IPAddress addreass = IPAddress.Parse(txtIP.Text.Trim());

IPEndPoint endpoint = new IPEndPoint(addreass, int.Parse(txtPort.Text.Trim()));

//向指定的 ip端口发送连接请求

sokClient.Connect(endpoint);

 

 

循环接收服务端发来的数据

while (isRecMsg)

            {

                byte[] msgRec = new byte[1024 * 1024 * 2];

                int recLength = sokClient.Receive(msgRec);

                switch(msgRec[0])

                {

                    case 1://接收到文件

                        SaveFileDialog sfd = new SaveFileDialog();

                        if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

                        {

                            using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create))

                            {

                                fs.Write(msgRec, 1, recLength - 1);

                            }

                            ShowMsg("文件保存完毕" + sfd.FileName);

                        }

                        break;

                    case 2://接收到字符串信息

                        {

                             //转换为字符串

                            string strRec = System.Text.Encoding.Default.GetString(msgRec, 1, recLength-1);

                            //将接收到的数据显示在文本框中

                            ShowMsg(strRec);

                            break;

                        }

                    case 3://接收到闪屏命令

                        {

                            ShakeWindow();

                            break;

                        }

                }

           }

 

显示消息到文本框:

void ShowMsg(string msg)

        {

            txtMsg.AppendText(msg + "\r\n");

        }

 

 

闪屏:

private void ShakeWindow()

        {

            Random ran = new Random();

            //保存窗体原坐标

            System.Drawing.Point point = this.Location;

            for (int i = 0; i < 30; i++)

            {

                //随机坐标

                this.Location = new System.Drawing.Point(point.X + ran.Next(8), point.Y + ran.Next(8));

                System.Threading.Thread.Sleep(15);//暂停15毫秒

                this.Location = point;//还原原坐标

                System.Threading.Thread.Sleep(15);//暂停15毫秒

            }

        }

 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能回答你关于黑马程序员SSM框架笔记的问题!SSM框架是指Spring + SpringMVC + MyBatis的组合,它们分别是Java开发中常用的三个主流框架。下面是一些关于SSM框架的基本笔记: 1. Spring框架:Spring是一个轻量级的JavaEE开发框架,它提供了很多功能,包括依赖注入、面向切面编程、事务管理等。使用Spring可以简化开发过程,提高代码的可维护性和可测试性。 2. SpringMVC框架:SpringMVC是Spring框架的一部分,它是一个基于MVC(Model-View-Controller)模式的Web框架。SpringMVC提供了很多特性,如请求映射、数据绑定、视图解析等,使得开发Web应用更加简单和灵活。 3. MyBatis框架:MyBatis是一个持久层框架,它提供了对数据库的访问和操作。MyBatis使用简单的XML或注解来配置SQL语句,并提供了很多数据库操作的方法,使得开发数据访问层更加方便。 4. SSM整合配置:在使用SSM框架时,需要将Spring、SpringMVC和MyBatis进行整合。一般来说,可以通过Spring的配置文件将它们整合在一起,配置数据源、事务管理、扫描包等。 5. 常用注解:在SSM框架中,有很多常用的注解可以使用。例如,@Controller用于标识一个控制器类,@RequestMapping用于映射请求路径和处理方法等。 以上是一些关于黑马程序员SSM框架的基本笔记,希望能对你有所帮助!如果你有任何其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值