⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 WindowsMobile平台应用开发一书的源码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace Sender
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IrDAClient irClient = new IrDAClient();
            //定制服务的名称
            string irServiceName = "IrDATest";
            IrDADeviceInfo[] irDevices;
            int buffersize = 256;

            // 首先查找红外网络里面的设备
            irDevices = irClient.DiscoverDevices(2);

            // 显示找到的第一个设备
            if ((irDevices.Length == 0))
            {
                MessageBox.Show("No remote infrared devices found.");
                return;
            }
            try
            {
                IrDAEndPoint irEndP =
                    new IrDAEndPoint(irDevices[0].DeviceID, irServiceName);
                IrDAListener irListen = new IrDAListener(irEndP);
                irListen.Start();
                irClient = irListen.AcceptIrDAClient();
                MessageBox.Show("Connected!");
            }
            catch (SocketException exSoc)
            {
                MessageBox.Show(("Couldn\'t listen on service "
                                + (irServiceName + (": " + exSoc.ErrorCode))));
            }

            // 打开一个文件用于发送
            Stream fs;
            try
            {
                //请首先在设备的My Documents文件夹下面放置一个send.txt文件用于发送
                fs = new FileStream(".\\My Documents\\send.txt", FileMode.Open);
            }
            catch (Exception exFile)
            {
                MessageBox.Show(("Cannot open " + exFile.ToString()));
                return;
            }

            // 获得IrDAClient对象的数据流
            Stream baseStream = irClient.GetStream();

            // 首先获得这个文件的长度
            byte[] length = BitConverter.GetBytes(fs.Length);
            //把这个文件的长度写到流中去
            baseStream.Write(length, 0, length.Length);

            // 建立缓冲区用于读取文件
            byte[] buffer = new byte[buffersize];
            int fileLength = (int)fs.Length;
            try
            {
                // 将文件流读入IrDAClient的数据流
                while ((fileLength > 0))
                {
                    Int64 numRead = fs.Read(buffer, 0, buffer.Length);
                    baseStream.Write(buffer, 0, Convert.ToInt32(numRead));
                    fileLength = (fileLength - Convert.ToInt32(numRead));
                }
                MessageBox.Show("File sent");
            }
            catch (Exception exSend)
            {
                MessageBox.Show(exSend.Message);
            }
            //关闭文件流,以及IrDAClient的数据流。最后关闭IrDAClient对象。
            fs.Close();
            baseStream.Close();
            irClient.Close();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -