我现在在写一个关于TCP的程序,服务器端是一个嵌入式的系统,用的是44B0,客户端是一个C#程序,现在遇到了如果多个C#程序对服务器进行请求,服务器端需要同时处理多个客户端连接和命令,由于下位机资源有限,不能创建多个线程,服务器端该如何做,如有提供C#解决方案也可以!(两边都是使用SOCKET套接字)
解决方案 »
- 寻找封包KEY,会的进来
- 关于软件安装显示日志的一些疑问,请指教
- 为什么3层框架要分那么多项目呢?一个项目里面放多个文件夹不行吗?
- 无法找到treeview控件
- Microsoft Visual C#.net中如何控制最大化的布局?
- WINFORM数据输入界面分页问题,求助“及时雨”们。
- winform中控制DataGrid的问题!
- 关于dotmsn的查询access的问题。倾囊求助
- 关于windows 窗体!
- 请问Response.Write("<Script language='javaScript'>confirm('确定,取消')</Script>");怎么获得选择的确定的值
- 菜鸟100分求教,有关声音播放的问题--
- 怎样设置DataList控件中非链接文字的颜色啊???谢谢!
看看MSDN在TCP异步连接(服务器)上的例程吧,很简单的说。
Socket clientSoc = _mainSoc.EndAccept(ar);
//创建一个新的套接字clientSoc来处理传入连接 ......
_mainSoc.BeginAccept(_acceptCallback,null);
//置主套接字继续等待别的传入连接
用这个做.
using System.Net;
using System.Net.Sockets;
using System.IO;namespace Server
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
string line;
IPEndPoint ipep=new IPEndPoint(IPAddress.Any,5000);
TcpListener listener=new TcpListener(ipep);
listener.Start();
Console.WriteLine("server...."); TcpClient client=listener.AcceptTcpClient();
NetworkStream ns=client.GetStream();
StreamReader sr=new StreamReader(ns);
StreamWriter sw=new StreamWriter(ns);
sw.WriteLine("Welcom to my server");
sw.Flush();
while(true)
{
try
{
line=sr.ReadLine();
Console.WriteLine(line);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
break;
}
sw.WriteLine(line);
sw.Flush();
}
sw.Close();
sr.Close();
ns.Close();
listener.Stop();
}
}
}