Đây có thể là một miếng bánh cho bất kỳ nhà phát triển có kinh nghiệm C#C# Async Webserver - làm thế nào để gửi dữ liệu cho khách hàng
Những gì bạn thấy ở đây là một máy chủ web không đồng bộ mẫu
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace SimpleServer
{
class Program
{
public static void ReceiveCallback(IAsyncResult AsyncCall)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
Byte[] message = encoding.GetBytes("I am a little busy, come back later!");
Socket listener = (Socket)AsyncCall.AsyncState;
Socket client = listener.EndAccept(AsyncCall);
Console.WriteLine("Received Connection from {0}", client.RemoteEndPoint);
client.Send(message);
Console.WriteLine("Ending the connection");
client.Close();
listener.BeginAccept(new AsyncCallback(ReceiveCallback), listener);
}
public static void Main()
{
try
{
IPAddress localAddress = IPAddress.Parse("127.0.0.1");
Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndpoint = new IPEndPoint(localAddress, 8080);
listenSocket.Bind(ipEndpoint);
listenSocket.Listen(1);
listenSocket.BeginAccept(new AsyncCallback(ReceiveCallback), listenSocket);
while (true)
{
Console.WriteLine("Busy Waiting....");
Thread.Sleep(2000);
}
}
catch (Exception e)
{
Console.WriteLine("Caught Exception: {0}", e.ToString());
}
}
}
tôi tải này từ web, để có một mô hình cơ bản để làm việc trên.
Về cơ bản những gì tôi cần làm là chạy máy chủ web này như là một quá trình trong máy tính. Nó sẽ được nghe por 8080 tất cả các thời gian, và khi một máy tính khách hàng gửi một yêu cầu, máy chủ này sẽ xử lý một số dữ liệu và gửi lại một kết quả như là một chuỗi.
Tôi tạo ra một dự án nhỏ với mã này (đó là chức năng như là), nhưng khi nó thực thi dòng
client.Send(message);
tất cả tôi nhận được là một lỗi trong trình duyệt, hoặc ít nhất một trang trống
Tôi nghi ngờ tôi cần phải xác định tiêu đề HTTP để gửi cùng với (tin nhắn), nhưng tôi đã tìm kiếm trên web về điều này mà không có may mắn
Bất cứ ai sẵn sàng trợ giúp?
Cảm ơn!
Cảm ơn mẹo! Tôi đã googling một chút, nhưng tôi không thể tìm thấy một cách để tạo ra các tiêu đề HTTP ... bạn có thể cho tôi một liên kết hoặc một ví dụ dựa trên mã tôi dán? Cảm ơn bạn một lần nữa! – jprealini
Làm việc trên đó. Sự thật thú vị: Tôi đã sao chép mã của bạn, biên dịch nó và nó hoạt động :-D – Tokk
Thật tuyệt vời! Một sự thật thú vị khác: Tôi đã có một phương pháp tương tự như vậy trong một dự án thử nghiệm khác mà tôi đang làm, và đã làm được điều này gần như chính xác như bạn mô tả ở đây, và nó hoạt động hoàn hảo ... A million thanks ... vẫn không thể chỉ định điểm hoặc nội dung như vậy, nhưng bạn nên biết tôi sẽ rất vui khi cung cấp cho bạn một số nếu tôi có thể ... Cảm ơn! – jprealini