这是SERVER代码 我想建立一个在线考试系统,它会将question.txt和规则.txt发送给连接到服务器的所有客户端。我不知道如何发送文件..我想从本地驱动器浏览文件然后将文件发送给所有客户请帮帮我
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 NetworksApi.TCP.SERVER;
namespace server
{
public delegate void show_status(string soneya);
public partial class Form1 : Form
{
Server examserver;
string star_time;
string finish_time;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void ChangeText(string soneya)
{
if (textBox3.InvokeRequired)
{
Invoke(new show_status(ChangeText), new object[] { soneya });
}
else
{
textBox3.Text += soneya + "\r\n";
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "" && textBox2.Text != " ")
{
examserver = new Server(textBox1.Text, textBox2.Text);
examserver.OnClientConnected += new OnConnectedDelegate(examserver_OnClientConnected);
examserver.OnClientDisconnected += new OnDisconnectedDelegate(examserver_OnClientDisconnected);
examserver.OnDataReceived += new OnReceivedDelegate(examserver_OnDataReceived);
examserver.OnServerError += new OnErrorDelegate(examserver_OnServerError);
examserver.Start();
ChangeText("server is Running");
}
}
void examserver_OnServerError(object Sender, ErrorArguments R)
{
//ChangeText("server is not Running");
}
void examserver_OnDataReceived(object Sender, ReceivedArguments R)
{
throw new NotImplementedException();
}
void examserver_OnClientDisconnected(object Sender, DisconnectedArguments R)
{
ChangeText("disconnected "+ R.Name );
}
void examserver_OnClientConnected(object Sender, ConnectedArguments R)
{
ChangeText("accepted request from"+R.Name );
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
star_time = textBox4.Text;
finish_time = textBox5.Text;
ChangeText("Exam will be Start from" + textBox4.Text);
ChangeText("Exam will be finish at " + textBox5.Text);
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
}
}
}
答案 0 :(得分:0)
我认为NetworksAPI库不包含“发送”/“Broacast”文件的方法。 (给一个用户或每个人)。 虽然我相信每个客户端(也可以作为服务器)和服务器也可以作为客户端工作。
无论哪种方式,我从未测试过,因为在我的应用程序中,我只需将客户端连接到服务器,并与之通信。
我注意到你也从视频教程中获得了代码。 我对我的应用程序进行了一些修改,包括添加一个将文件发送到服务器的方法。 (该教程中未包含该内容)
我可能无法帮助您100%发送文件“广播”(向所有人发送文件),但我可以帮助您(或任何需要这样做的人)获取发送文件的解决方案(或文件)从客户端到服务器。
检查我的教程Bellow(尽可能选择您的代码/ Internet上的标准教程):
“如何使用NetworksAPI将文件从客户端发送到服务器”
[在客户端]
1)创建一个字符串:
string fileName;
2)创建一个获取/设置方法:
public string FileName { get { return fileName; } set { fileName = value; } }
3)按钮“Send_File_Click”(说明):
a)配置OpenFile对话框
b)然后加载OpenFileDialog
c)将您在上面创建的字符串设置为OpenFileDialog Selected File
Code Bellow:
private void button_SendFile_Click(object sender, EventArgs e)
{
try
{
ofd = new OpenFileDialog();
ofd.CheckFileExists = true;
ofd.CheckPathExists = true;
ofd.Multiselect = false;
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
fileName = ofd.FileName;
textbox_FileName.Text = FileName;
c.SendFile(fileName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
如果您愿意,可以将转移百分比添加到“状态”文本框。
注意:我相信在教程(视频)中你得到了CodeBox TextBox
被调用:txt_Chat或txt_Message。
Code Bellow:
void c_OnClientFileSending(object Sender, ClientFileSendingArguments R)
{
try
{
/*
Set Text stands for the method: "updateText" or "changeText" as referenced in that Tutorial you've seen.
Included a `String.Format` to Properly Display Percentage.
*/
string percentage = String.Format("Transfering: {0}%", R.TransferPercentage); SetText(percentage);
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
[在服务器上]
1)在"Form1_Load()"
方法内,您必须设置服务器(已接收)文件路径。
示例:
private void Form1_Load(object sender, EventArgs e)
{
server.FilesPath = @"C:\";
}
那都是M8!
请注意,没有任何消息(在我的代码中)将指示文件是否存在 收到与否。
如果你像我上面提到的那样设置"textbox_Status"
,你会注意到它
将在文件发送后显示:“100%”。
转移完成后,只需检查(服务器)收到的文件夹。
在这种情况下,它将位于C:\
该文件将在那里。
最诚挚的问候;