如何在ASP.NET MVC应用程序中使用system.net.sockets [英] How can I use system.net.sockets in ASP.NET MVC application
问题描述
Hello Everyone,
我在winforms和控制台应用程序中使用套接字
但是我在编写ASP.Net MVC应用程序时遇到了一些问题。< br $>
我的问题是
*如何在ASp.Net MVC应用程序中使用System.Net.Sockets来创建一个简单的聊天应用程序。 />
任何想法,示例或示例对我都非常有帮助。
我希望套接字能够以交互方式工作。 ..
感谢你。
我的尝试:
使用System;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用System.Net;
使用System.Net。套接字;
使用System.Text;
命名空间sgsmSocket.Controllers
{
public class HomeController:Controller
{
string res =;
套接字服务器,客户端;
byte [] _buffer;
public HomeController()
{
StartServer();
}
private void StartServer()
{
尝试
{
server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
server.Bind (new IPEndPoint(IPAddress.Any,25001));
server.Listen(0);
server.BeginAccept(new AsyncCallback(AcceptCallback),null);
res + =>>听;
//Response.Write(服务器运行);
}
catch(异常错误)
{
res + =>>听力错误+ err.Message;
}
}
private void AcceptCallback(IAsyncResult ar)
{
尝试
{
client = server.EndAccept(ar);
_buffer = new byte [client.ReceiveBufferSize];
res + =>>接受;
client.BeginReceive(_buffer,0,_buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveCallback),null);
}
catch(异常错误)
{
res + =>>接受错误+ err.Message;
}
}
private void ReceiveCallback(IAsyncResult ar)
{
尝试
{
int received = client.EndReceive(ar);
Array.Resize(ref _buffer,received);
string text = Encoding.ASCII.GetString(_buffer);
Array.Resize(ref _buffer,client.ReceiveBufferSize );
res + =>>收到+ text;
client.BeginReceive(_buffer,0,_buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveCallback),null);
}
catch(异常错误)
{
res + =>>接收错误+ err.Message;
}
}
//
// GET:/ Home /
公共ActionResult索引()
{
ViewBag.msg = res;
return View();
}
}
}
Hello Everyone,
I have worked on sockets in winforms and console applications
but i am having some problem in writing the same for ASP.Net MVC application.
My Problem is
* How to use System.Net.Sockets in ASp.Net MVC Application to create a simple chat app.
Any ideas, samples or example will be very helpful to me.
I want the socket work interactively...
Thanking you.
What I have tried:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace sgsmSocket.Controllers
{
public class HomeController : Controller
{
string res = "";
Socket server, client;
byte[] _buffer;
public HomeController()
{
StartServer();
}
private void StartServer()
{
try
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(new IPEndPoint(IPAddress.Any, 25001));
server.Listen(0);
server.BeginAccept(new AsyncCallback(AcceptCallback), null);
res += ">> Listening";
//Response.Write("Server Running");
}
catch (Exception err)
{
res += ">> Listening Error " + err.Message;
}
}
private void AcceptCallback(IAsyncResult ar)
{
try
{
client = server.EndAccept(ar);
_buffer = new byte[ client.ReceiveBufferSize];
res += ">> Accepted";
client.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), null);
}
catch (Exception err)
{
res += ">> Accept Error " + err.Message;
}
}
private void ReceiveCallback(IAsyncResult ar)
{
try
{
int received = client.EndReceive(ar);
Array.Resize(ref _buffer, received);
string text = Encoding.ASCII.GetString(_buffer);
Array.Resize(ref _buffer, client.ReceiveBufferSize);
res += ">> Received " + text;
client.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), null);
}
catch (Exception err)
{
res += ">> Receiving Error " + err.Message;
}
}
//
// GET: /Home/
public ActionResult Index()
{
ViewBag.msg = res;
return View();
}
}
}
推荐答案
尝试ASP.NET SignalR [ ^ ] - 它模拟套接字(甚至在后台使用WebSockets)并在网络上提供实时功能。
Try ASP.NET SignalR[^] - it simulates sockets (even uses WebSockets in the background) and provides "real time" functionality over web.
这篇关于如何在ASP.NET MVC应用程序中使用system.net.sockets的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!