客户端多线程的问题,急啊

yanglg 2007-08-09 09:51:59


1、先与服务端建立一个基本的联接,及时接收服务端发过来的数据
2、如果当服务端发送一个“Q”指令时,再与服务器创建一个连接,根据协议进行数据交换(服

务端会发根据情况,发N个请求,不是同时发的)
3、基本的联接每隔1分钟向服务端发送一个心跳命令。服务端回复”OK“,则表示联接正常,否

则自动连接服务端。

需要用多线程做,支持服务端的数据并发。
对于以上的要求,我该如果做。希望大家给个思路。

最好有代码,因为,我是菜鸟!
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wweennbb 2007-08-10
  • 打赏
  • 举报
回复
每建立一个连接就重新启动一个新的监听线程就行。

当连接断了就中止,然后再重新连接,建立新连和启动新监听纯种
liujie2007 2007-08-10
  • 打赏
  • 举报
回复
给你个例子,参考一下
/// <summary>
/// 请求心跳消息
/// </summary>
/// <param name="strmsguid"></param>
private void RequestHeart(string strmsguid)
{
string des = ",Ack MML=Heart Beat:MSGID="+strmsguid+";";
NetSocket(this.serverSocket, des);
}
public void NetSocket(Socket serverSocket, string des)
{
try
{
lock(typeof(OneSpMonitorBLL))
{
NetworkStream net = new NetworkStream(serverSocket);

string title="len=";

byte[] bytetitle = Encoding.ASCII.GetBytes(title);
byte[] bytelen = new byte[4];
byte[] byteDes = Encoding.ASCII.GetBytes(des);

int lenTitle = bytetitle.Length;
int lenLen = bytelen.Length;
int lenDes = byteDes.Length;
int totalLength = lenTitle+lenLen+lenDes;

bytelen = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(totalLength));

byte[] totals = new byte[totalLength];
Array.Copy(bytetitle, 0, totals, 0, lenTitle);
Array.Copy(bytelen, 0, totals, lenTitle, lenLen);
Array.Copy(byteDes, 0, totals, lenLen+lenTitle, lenDes);

net.Write(totals, 0, totals.Length);
net.Flush();
}
}
catch
{
}
}
yanglg 2007-08-10
  • 打赏
  • 举报
回复
这一步怎么做啊?

救救我吧
greenery 2007-08-09
  • 打赏
  • 举报
回复
查一下Socket的资料。。。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧