private TcpListener server = null;
private bool stopped = false;
private void button1_Click(object sender, EventArgs e)
{
//IPAddress localIp = DnsGetHostAddresses("localhost")[0];
server = new TcpListener(12345);
serverStart();
showInfo("服务端启动 ");
Thread thServer = new Thread(serverHandler) { IsBackground = true};
thServerStart(server);
client = new TcpClient();
clientConnect("127001", 12345);
if (clientConnected)
showInfo("客户端已经连接: " + clientClientRemoteEndPointToString());
else
showInfo("未连接上服务端");
if (clientConnected)
{
Thread th = new Thread(clientHandler) { IsBackground = true };
thStart(client);
}
}
private void serverHandler(object obj)
{
TcpListener svr = (TcpListener)obj;
while (!stopped)
{
try
{
TcpClient tcpClient=null;
if (svrPending())
{
tcpClient = svrAcceptTcpClient();
Thread th = new Thread(serverClientHandler) { IsBackground = true };
thStart(tcpClient);
showInfo("服务端接收连接, 并开始通讯: " + tcpClientClientRemoteEndPointToString());
}
else
{
showInfo("暂时无连接请求:");
ThreadSleep(60000);
}
}
catch(Exception ex)
{
showInfo("服务端监听连接异常: " + exMessage);
ThreadSleep(1000);
}
}
}
// 服务端处理连接
private void serverClientHandler(object obj)
{
byte[] buf = new byte[1024];
TcpClient client = (TcpClient)obj;
while (!stopped && clientConnected)
{
try
{
showInfo("等待客户端指令 ");
int count = clientClientReceive(buf);
if (count > 0)
{
//parse
string cmd = EncodingDefaultGetString(buf, 0, count);
showInfo("收到客户端指令: " +cmd);
switch (cmd)
{
case "OK":
clientClientSend(EncodingDefaultGetBytes(cmd));
break;
default:
break;
}
}
}
catch (Exception ex)
{
showInfo("接收客户端指令超时: " + exMessage);
}
}
}
// 客户端处理连接
private void clientHandler(object obj)
{
byte[] buf = new byte[1024];
TcpClient client = (TcpClient)obj;
clientClientSend(EncodingDefaultGetBytes("OK"));
while (!stopped && clientConnected)
{
try
{
int count = clientClientReceive(buf);
if (count > 0)
{
//parse
}
}
catch (Exception ex)
{
showInfo("接收服务端数据超时: " + exMessage);
}
}
}代码应该是$taskset-c-p。
linux服务器怎么降低内核cpu进程,获知Linux的进程运行在哪个CPU内核上的当你在多核NUMA处理器上运行需要较高性能的HPC(高性能计算)程序或非常消耗网络资源的程序时。
CPU/memory的亲和力是限度其发挥最大性能的重要因素之一。
在同一NUMA节点上调度最相关的进程可以减少缓慢的远程内存访问。
像英特尔SandyBridge处理器,该处理器有一个集成的PCIe控制器,你可以在同一NUMA节点上调度网络I/O负载(如网卡)来突破PCI到CPU亲和力限制。
作为性能优化和故障排除的一部分,你可能想知道特定的进程被调度到哪个CPU内核(或NUMA节点)上运行。
这里有几种方法可以找出哪个CPU内核被调度来运行给定的Linux进程或线程。
方法一如果一个进程使用taskset命令明确的被固定(pinned)到CPU的特定内核上,你可以使用taskset命令找出被固定的CPU内核。
复制代码代码如下:$taskset-c-p。
例如,如果你对PID5357这个进程有兴趣:复制代码代码如下:taskset-c-p5357。
pid5357'scurrentaffinitylist:5输出显示这个过程被固定在CPU内核5上。
但是,如果你没有明确固定进程到任何CPU内核,你会得到类似下面的亲和力列表。
pid5357'scurrentaffinitylist:0-11输出表明该进程可能会被安排在从0到11中的任何一个CPU内核。
在这种情况下,taskset不能识别该进程当前被分配给哪个CPU内核,你应该使用如下所述的方法。建议: 以上计算结果说明:“单元格格式”、“数字”选项卡设置的“小数位数”,只能将单元格数值的显示结果进行四舍五入,并不能对所存放的数值进行四舍五入。换句话说,单元格数值的显示结果与实际存放结果并不完全一致,如果不注意这个问题,计算工资等敏感数据就会出现错误。例如在上例中,F2单元格内的数值虽然显示为48,但实际存放的却是4845,自然得出了4845136=6590的结果(按计算要求应为6528)。服务端:
in = new BufferedReader(new InputStreamReader(socketgetInputStream()));
out = new PrintWriter(socketgetOutputStream(),true);
String line = inreadLine();
outprintln("you input is:"+line);
先从客户端读取内容,然后再往客户端写,服务器端并没有打印,怎么能看到
此时客户端的socket应该也关闭了,所以客户端也看不到
注:先开服务器,再运行客户端\x0d\\x0d\\x0d\无标题文档\x0d\\x0d\\x0d\重新上传" \x0d\responseend \x0d\end if \x0d\fType=1 \x0d\fOpen \x0d\aPosition=i-1 \x0d\aCopyTo f,j \x0d\\x0d\h = Mid(h, InStrRev(h, "filename=""") + 10) '这是我帮你添加的,文件名的获取没有正确 \x0d\fSaveToFile servermappath("/EXCEL/"& h),2 \x0d\fClose \x0d\set f=Nothing \x0d\aClose \x0d\set a=Nothing \x0d\'responsewrite ""&h&""\x0d\end if\x0d\If Errnumber 0 Then\x0d\ responseWrite errnumber\x0d\ responseWrite errDescription\x0d\ ResponseEnd\x0d\ End If\x0d\%>\x0d\\x0d\ function checkupload() {\x0d\ if (documentupload_formfevalue == "") {\x0d\ alert("未选择要上传的文件"); \x0d\ return false;\x0d\ } \x0d\ }\x0d\\x0d\ \x0d\ \x0d\\x0d\ \x0d\\x0d\安装好nodejs之后,我们需要安装“ws”,也就是我们的websocket实现,安装方法很简单,在终端或者命令行中输入:
npm
install
ws
,等待安装完成就可以了。
接下来,我们需要启动我们的websocket服务。首先,我们需要构建自己的>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)