日期:2014-05-18  浏览次数:20764 次

C# 新手提问,应该用Socket异步,还是同步Socket+多线程方法
本人刚刚接触C#,现在要做一个信号监测的项目,实现一个服务器,连接的客户端大概有200多个,平时要上报一些数据(信号出现问题时上报),但是每周这些客户端要同时把一周的数据上报给服务器(数据量较大),且整个系统需要长时间运转。
这种情况下是不是必须要使用异步的Socket来进行编程的工作?如果我用同步的Socket+多线程的方法,可以吗?
此外,我看有一些异步Socket的程序也有用到多线程,我有些糊涂,所以想向高手请教,哪一种方法较好?

------解决方案--------------------
探讨
同步Socket + Thread 并不能达到 异步Socket 里异步IO的特性,这一点要注意

------解决方案--------------------
为每一个客户端的Socket单独分配一个线程来处理,服务端主要就是Receive数据
while(true)
{
Socket clientSocket=socket.accept();
Thread t=new Thread(委托函数);
t.Start(clientSocket)
}

function ***(Socket s)
{
byte[] b=s.Recieve();
}
……
差不多就这意思吧