• 大小: 6.58MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-14
  • 语言: C#
  • 标签: c#  p2p  文件传输  

资源简介

本项目为网络课程设计的作业,采用c#实现,使用UDP传输协议,实现p2p的文件传输

资源截图

代码片段和文件信息

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;
using System.Net.Sockets;
using System.Threading;
using System.xml;

/*  
 * 00号报文 客户端通知服务器,客户端已上线
 * 
 * 01号报文 服务器通知客户端,服务器停止运行
 * 
 * 05号报文 客户端通知服务器,客户端已下线
 * 
 * 06号报文 服务器通知客户端,在线客户端信息
 * 
 */
namespace project1
{
    public partial class Server : Form
    {
        private IPEndPoint ServerInfo;//存放服务器的IP和端口信息
        private Socket ServerSocket;//服务端运行的SOCKET
        private Thread ServerThread;//服务器端运行的线程
        private List ClientSockets = new List();//为客户端建立的SOCKET连接 
        private byte[] MsgBuffer;//存放消息数据 

        public Server()
        {
            InitializeComponent();
        }
        private void Form1_Load_1(object sender EventArgs e)
        {
            Startbutton.Enabled = true;
            Stopbutton.Enabled = false;
        }

        //服务器开始运行
        private void Startbutton_Click(object sender EventArgs e)
        {

            ServerSocket = new Socket(AddressFamily.InterNetwork SocketType.Stream ProtocolType.Tcp);
            ServerInfo = new IPEndPoint(IPAddress.Any 8001);
            ServerSocket.Bind(ServerInfo);//将SOCKET接口和IP端口绑定 
            ServerSocket.Listen(10);//开始监听

            MsgBuffer = new byte[65535];//消息数据大小 

            ServerThread = new Thread(RecieveAccept);//将接受客户端连接的方法委托给线程 
            ServerThread.Start();//线程开始运行 
            CheckForIllegalCrossThreadCalls = false;//不捕获对错误线程的调用

            Startbutton.Enabled = false;
            Stopbutton.Enabled = true;
            StateMsg.Text = “服务正在运行“ + “  运行端口:“ + 8001 + “\n“;
            ClientList.Items.Add(“服务于 “ + DateTime.Now.ToString() + “ 开始运行.“);
            

        }

        //服务器停止运行
        private void Stopbutton_Click(object sender EventArgs e)
        {
            for (int i = 0; i < ClientSockets.Count; ++i)//给在线客户端发送01号消息,通知服务器停止运行
            {
                if (ClientSockets[i].Connected)
                {
                    ClientSockets[i].Send(Encoding.UTF8.GetBytes(“01“));
                }
                Array.Clear(MsgBuffer 0 MsgBuffer.Length);
            }
            ClientSockets.Clear();
            ServerThread.Abort();//线程终止
            ServerSocket.Close();//关闭

            Startbutton.Enabled = true;
            Stopbutton.Enabled = false;
            StateMsg.Text = “等待运行“;
            ClientList.Items.Add(“服务于 “ + DateTime.Now.ToString() + “ 停止运行.“);
        }

        
         //接受客户端连接的方法
         private void RecieveAccept() 
         { 
             while (true)
            {
                ClientSockets.Add(ServerSocket.Accept());
                ClientSockets[ClientSockets.Count - 1].BeginReceive(MsgBuffer 0 MsgBuffer.Length 0 new AsyncCallback(RecieveCallBack) ClientSo

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12288  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\bin\Debug\project1.exe

     文件      26112  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\bin\Debug\project1.pdb

     文件      14328  2010-09-16 00:49  P2P文件传输的BS系统\project1\project1\project1\bin\Debug\project1.vshost.exe

     文件        490  2007-07-21 01:33  P2P文件传输的BS系统\project1\project1\project1\bin\Debug\project1.vshost.exe.manifest

     文件      10752  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\bin\Release\project1.exe

     文件      32256  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\bin\Release\project1.pdb

     文件      14328  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\bin\Release\project1.vshost.exe

     文件        490  2009-06-11 05:14  P2P文件传输的BS系统\project1\project1\project1\bin\Release\project1.vshost.exe.manifest

     文件       7188  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\Form1.cs

     文件       4465  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\Form1.Designer.cs

     文件       5814  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\Form1.resx

     文件       2706  2010-09-16 00:49  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.csproj.FileListAbsolute.txt

     文件        847  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.csproj.GenerateResource.Cache

     文件      12288  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.exe

     文件        180  2010-09-12 19:40  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.Form1.resources

     文件      26112  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.pdb

     文件        180  2010-09-07 16:53  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.Properties.Resources.resources

     文件        180  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\obj\Debug\project1.Server.resources

     文件       2150  2010-09-07 20:48  P2P文件传输的BS系统\project1\project1\project1\obj\Release\project1.csproj.FileListAbsolute.txt

     文件        847  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\obj\Release\project1.csproj.GenerateResource.Cache

     文件      10752  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\obj\Release\project1.exe

     文件        180  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\obj\Release\project1.Form1.resources

     文件      32256  2010-09-07 16:56  P2P文件传输的BS系统\project1\project1\project1\obj\Release\project1.pdb

     文件        180  2010-09-07 16:53  P2P文件传输的BS系统\project1\project1\project1\obj\Release\project1.Properties.Resources.resources

     文件        501  2010-09-15 20:11  P2P文件传输的BS系统\project1\project1\project1\Program.cs

     文件       3762  2010-09-07 16:53  P2P文件传输的BS系统\project1\project1\project1\project1.csproj

     文件         74  2010-09-07 16:45  P2P文件传输的BS系统\project1\project1\project1\project1.csproj.user

     文件       1452  2010-09-07 13:53  P2P文件传输的BS系统\project1\project1\project1\Properties\AssemblyInfo.cs

     文件       2845  2010-09-07 13:53  P2P文件传输的BS系统\project1\project1\project1\Properties\Resources.Designer.cs

     文件       5612  2010-09-07 13:53  P2P文件传输的BS系统\project1\project1\project1\Properties\Resources.resx

............此处省略60个文件信息

评论

共有 条评论