public partial class comservice {
private int maxlink = 100000;
private int currentlinked;
private manualresetevent tcpclientconnected = new manualresetevent(false);
public void start() {
thread thread = new thread(new parameterizedthreadstart(showstat));
thread.isbackground = true;
thread.start();
tcplistener server = new tcplistener(new system.net.ipendpoint(0, 8090));
server.start(100);
tcpclientconnected.reset();
iasyncresult result = server.beginaccepttcpclient(new asynccallback(acceptor), server);
tcpclientconnected.waitone();
}
private void showstat(object o) {
while (true) {
lock (typeof(comservice)) {
console.writeline("当前连接数:" + currentlinked + "/" + maxlink);
}
thread.sleep(2000);
}
}
private void acceptor(iasyncresult o) {
tcplistener server = o.asyncstate as tcplistener;
debug.assert(server != null);
tcpclient client = null;
try {
client = server.endaccepttcpclient(o);
system.threading.interlocked.increment(ref currentlinked);
} catch {
}
iasyncresult result = server.beginaccepttcpclient(new asynccallback(acceptor), server);
if (client == null) {
return;
} else {
thread.currentthread.join();
}
close(client);
}
private void close(tcpclient client) {
if (client.connected) {
client.client.shutdown(socketshutdown.both);
}
client.client.close();
client.close();
system.threading.interlocked.decrement(ref currentlinked);
}
}
}
以下是client的代码:
public class clientpool {
private static list
private static int freecount;
private static int workcount;
private static int maxallowed = 2;
private static int minclients = 2;
///
/// create new instance
///
private clientpool() {
}
private static clientpool instance;
private static readonly object syncinstanceobj = new object();
public static clientpool singleton {
get {
if (instance == null) {
lock (syncinstanceobj) {
if (instance == null) {
instance = new clientpool();
}
}
}
return instance;
}
}
private static readonly object syncobj = new object();
public tcpwork getclient() {
try {
tcpwork work = new tcpwork();
work.connect("127.0.0.1", 8090);
work.lingerstate = new lingeroption(false, 3);
work.iswork = true;
work.expired = false;
workcount++;
lock (syncobj) {
clients.add(work);
}
console.writeline(workcount);
return work;
} catch (exception ex){
console.writeline(ex.message);
return null;
}
}
}
client模拟多线程并发
class program {
static void main(string[] args) {
for (int i = 0; i < 1000; i++) {
threadpool.queueuserworkitem(new waitcallback(work), null);
}
console.readkey();
}
private static void work(object o) {
clientpool.singleton.getclient();
}
}
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔