我的问题是这样的: 我现在是对串口进行通讯,其中涉及到了多线程优先级问题和参数传递问题,
我想实现的效果:用户发送什么信息,服务器就返回给客户端什么信息
当多个客户端通过Socket发送参数信息给服务器端,服务器端接受参数,如果这多个客户同时发送信息,
服务器是如何区分这些参数是来自哪个用户的?
备注:Socket客户端和服务器的单向通讯已经实现。 请各位帮帮忙,先谢过了
我想实现的效果:用户发送什么信息,服务器就返回给客户端什么信息
当多个客户端通过Socket发送参数信息给服务器端,服务器端接受参数,如果这多个客户同时发送信息,
服务器是如何区分这些参数是来自哪个用户的?
备注:Socket客户端和服务器的单向通讯已经实现。 请各位帮帮忙,先谢过了
当B/S端同时提交多个请求给C/S端时,C/S端如何一对一的把每个请求的信息返回给对应的用户?
点击A按钮: B/S中传递了参数A给 C/S
点击B按钮: B/S中传递了参数B给 C/S
点击C按钮: B/S中传递了参数C给 C/S
我在C/S中每接受一个请求就生成一个线程,现在问题是:如何保证传递来参数一对一的传递给相应的线程呢?
private void OnReceiveData(IAsyncResult ar)
{
Monitor.Enter(this);
MySocket socket = ar.AsyncState as MySocket;
if (socket == null || !socket.IsConnected)
return;
int length = socket.Socket.EndReceive(ar);
string msg = Encoding.UTF8.GetString(socket.Buffer,0,length);
string[] strings = msg.Split(',');
//参数设定流程,优先级为:1
if (flag == "A")
{
Thread pst = new Thread(new ThreadStart(Test1));
pst.Name = "Test1" + psFlag;
socket.SendMessage(strings[1]);
}
else if (flag == "B")
{
Thread pst = new Thread(new ThreadStart(Test2));
pst.Name = "Test2" + psFlag;
socket.SendMessage(strings[1]);
}假如A的参数socket.SendMessage(strings[1]);还没执行完,这时候B的参数传递过来了,那么A的参数会被B的参数覆盖,出现参数传递错位
{
Monitor.Enter(this);
MySocket socket = ar.AsyncState as MySocket;
if (socket == null || !socket.IsConnected)
return;
int length = socket.Socket.EndReceive(ar);
string msg = Encoding.UTF8.GetString(socket.Buffer,0,length);
string[] strings = msg.Split(',');
flag=strings[0];
//参数设定流程,优先级为:1
if (flag == "A")
{
Thread pst = new Thread(new ThreadStart(Test1));
pst.Name = "Test1" + psFlag;
socket.SendMessage(strings[1]);
}
else if (flag == "B")
{
Thread pst = new Thread(new ThreadStart(Test2));
pst.Name = "Test2" + psFlag;
socket.SendMessage(strings[1]);
}
Moniter.Exit(this)
}
假如A的参数socket.SendMessage(strings[1]);还没执行完,这时候B的参数传递过来了,那么A的参数会被B的参数覆盖,出现参数传递错位