Tôi đã tạo một máy chủ đơn giản bằng cách sử dụng lập trình socket trong C# sẽ nhận tệp từ phía máy khách. Phân đoạn mã mẫu của tôi được đưa ra dưới đây.Gửi một số ràng buộc cho khách hàng từ máy chủ trong C#
Tôi muốn thêm một số hạn chế. Tôi muốn giới hạn kích thước tệp (chẳng hạn như 4 KB hoặc 2 KB) và các định dạng tệp cho phép (chẳng hạn như .doc, .txt, .cpp, v.v.) sẽ được gửi cho khách hàng ngay sau khi máy khách kết nối với máy chủ sao cho máy khách có thể gửi các tập tin cho phù hợp. Làm thế nào tôi sẽ làm điều đó? đoạn mã
mẫu:
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
namespace FileTransfer
{
class Program
{
static void Main(string[] args)
{
// Listen on port 1234
TcpListener tcpListener = new TcpListener(IPAddress.Any, 1234);
tcpListener.Start();
Console.WriteLine("Server started");
//Infinite loop to connect to new clients
while (true)
{
// Accept a TcpClient
TcpClient tcpClient = tcpListener.AcceptTcpClient();
Console.WriteLine("Connected to client");
byte[] data = new byte[1024];
NetworkStream ns = tcpClient.GetStream();
int recv = ns.Read(data, 0, data.Length);
StreamReader reader = new StreamReader(tcpClient.GetStream());
//Will add some lines to add restrictions...
}
}
}
}
Những dòng bổ sung, tôi sẽ phải thêm vào đoạn code để gửi các hạn chế cho khách hàng?
Để giới hạn kích thước tệp, chỉ cần thêm bộ đếm kích thước dữ liệu, như "int counter = 0; counter + = recv;". Sau đó, nếu giới hạn vượt quá thả khách hàng với thông điệp thích hợp. –
Tôi chỉ muốn gửi kích thước tệp và định dạng tệp được phép cho khách hàng dưới dạng sson khi khách hàng kết nối để khách hàng có thể gửi tệp cho phù hợp @Alek Depler –
Hm, sau đó bạn phải tạo giao thức máy khách-máy chủ của riêng mình. Cả khách hàng và máy chủ đều có thể gửi dữ liệu cho nhau, bạn cần chia nhỏ tất cả dữ liệu theo hai loại: hướng dẫn giao thức kỹ thuật và chính dữ liệu. Câu trả lời của "CodeCaster" là chính xác –