社区
C#
帖子详情
如何用多线程来管理每一个socket client的连接?
ZengXi
2002-11-01 02:05:02
服务器端有一个listener,客户端可能有20个client,
我想对每个client到listener的连接用一个线程来监听,
谁能给我个例子, 谢谢,
分不够可以再开
...全文
121
8
打赏
收藏
如何用多线程来管理每一个socket client的连接?
服务器端有一个listener,客户端可能有20个client, 我想对每个client到listener的连接用一个线程来监听, 谁能给我个例子, 谢谢, 分不够可以再开
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ZengXi
2002-12-05
打赏
举报
回复
结
bolar
2002-11-29
打赏
举报
回复
http://www.aspcool.com/lanmu/browse1.asp?ID=879&bbsuser=csharp
可能对你有帮助
LovenDreams
2002-11-29
打赏
举报
回复
在Programming C# 一书中有这个例子
服务器用无限循环来监听客户端的连接,一检测到有客户连接则实例化处理应用的类,若有二十个客户,则实例化20个该类就行了,不用开线程!
ZengXi
2002-11-05
打赏
举报
回复
能否给个例子呢?
sunwindone
2002-11-01
打赏
举报
回复
最好是给出完整代码,客户端和服务器端的,大家检现成的
eshao
2002-11-01
打赏
举报
回复
关注.. 请高手们给出更好的方法.
qf0421
2002-11-01
打赏
举报
回复
你的设计不对,如果client增加,你难道也无止境的增加线程????
最常用的方法是用队列来管理这些socketclient。
xiaolie
2002-11-01
打赏
举报
回复
public class server1 {
...
private void doCmd()
{
while(!terminated)
{
try
{
TcpClient clientSock = tcpListener.AcceptTcpClient();
if (clientSock != null)
{
CmdSession cmdSession = new CmdSession(clientSock, logger);
cmdSession.start();
}
}
catch(Exception e)
{
logger.logMsg("Exception : " + e.ToString());
Thread.Sleep(1000);
}
}
}
public void start()
{
...
try
{
ThreadStart ths = new ThreadStart(doCmd);
Thread th = new Thread(ths);
th.Name = "Work Thread";
th.Start();
}
catch (Exception e)
{
logger.logMsg("doCmd err:" + e.Message + " " + e.ToString());
}
...
}
}
public class CmdSession
{
private KBLogger logger;
private TcpClient clientSock;
private bool terminated = false;
private NetworkStream netStream;
private StreamReader netReader;
private StreamWriter netWriter;
private ArrayList msgLines;
public CmdSession(TcpClient clientSock, KBLogger logger)
{
//
// TODO: Add constructor logic here
//
this.clientSock = clientSock;
this.logger = logger;
msgLines = new ArrayList();
netStream = clientSock.GetStream();
netReader = new StreamReader(netStream);
netWriter = new StreamWriter(netStream);
}
private void recvThreadFunc()
{
while(!terminated)
{
try
{
string cmdLine = netReader.ReadLine();
cmdLine = cmdLine.ToLower().Trim();
if (cmdLine.Equals("quit"))
{
Close();
}
if (cmdLine.IndexOf("list") == 0)
{
string item = cmdLine.Trim().Substring(4).Trim();
if (item.IndexOf("process") == 0)
{
Process[] ps = Process.GetProcesses();
Monitor.Enter(msgLines);
foreach (Process p in ps)
{
msgLines.Add(p.ToString());
}
msgLines.Add("COMMAND OK");
Monitor.Exit(msgLines);
}
}
......
}
catch (Exception e)
{
logger.logMsg("CmdSession.recvThreadFunc: error:" + e.ToString());
netReader.Close();
Thread.Sleep(500);
Close();
}
}
}
private void sendThreadFunc()
{
while(!terminated)
{
Monitor.Enter(msgLines);
foreach(string msgLine in msgLines)
{
netWriter.WriteLine(msgLine);
}
msgLines.Clear();
Monitor.Exit(msgLines);
}
}
public void start()
{
ThreadStart recvTS = new ThreadStart(recvThreadFunc);
Thread recvThread = new Thread(recvTS);
recvThread.Start();
ThreadStart sendTS = new ThreadStart(sendThreadFunc);
Thread sendThread = new Thread(sendTS);
sendThread.Start();
}
public void Close()
{
terminated = true;
clientSock.Close();
}
c#
多线程
socket
开发(
一个
服务器对多个客户端)
c#语言开发
多线程
socket
服务器端程序,实现
一个
服务器同时与多个客户端
连接
对话。
java
socket
通讯例程
多线程
读写 可以同时收发不同终端的消息
在主线程中通过控制台读取键盘...服务器在收到
一个
socket
连接
之后,把该
socket
保存到队列中,并对队列中的每个
socket
开启各自的读写线程。测试可以在不同控制台运行server和
client
,服务器接收消息时,会显示消息来源
C#
多线程
和
Socket
网络编程精讲
【教学理念】 1、把“需要工作的人”变成“工作... 3、物美价廉:本着知识共享、服务社会宗旨,诣在为更多有需求者提供服务。 此外,提供源代码+答疑+上课讲义,为学生毕业设计、找工作面试等提供指导。
Python的
Socket
连接
例子(包含
多线程
例子)
简单的Python的
Socket
连接
的例子 包含Server和
Client
,还有
一个
多线程
的测试
使用TCPServer编写(
多线程
)
socket
服务
使用TCPServer编写(
多线程
)
socket
服务 http://blog.csdn.net/ghostfromheaven/article/details/8653421
C#
110,565
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章