服务端


bool isRunning = true;
  MouseKeyBoard mk = new MouseKeyBoard();

void InitTcpServer(int port)
{
Thread t = new Thread(() =>
{
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
Log("监听:" + port); while (isRunning)
{
var tcpClient = listener.AcceptTcpClient();
try
{
Thread t2 = new Thread(() =>
{
NetworkStream clientStream = tcpClient.GetStream(); while (isRunning)
{
try
{
if (!clientStream.DataAvailable)
{
Thread.Sleep(100); //否则死循环,cpu占用超高
continue;
}
byte[] buffer = new byte[tcpClient.Available]; //new byte[clientStream.Length]; //报错此流不支持查找
int readBytes = ;
readBytes = clientStream.Read(buffer, , buffer.Length);
clientStream.Flush(); string request = Encoding.UTF8.GetString(buffer).Trim();
Log(request); if (request.StartsWith("SetTime|"))
{
var str = DateTime.Parse(request.Substring()).ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss");
SetLocalTimeByStr(str);
clientStream.Flush();
clientStream.Write(Encoding.Default.GetBytes("ok"), , ); //发送给客户端
clientStream.Flush();
}
else if (request.StartsWith("MouseClick|"))
{
var arr = request.Split('|');
if (arr.Length >= )
{
mk.MouseClick(arr[]);
}
}
else if (request.StartsWith("ShutDown|"))
{
ExecuteCmd("shutdown -s -t 120");
}
else if (request.StartsWith("CancelShutDown|"))
{
ExecuteCmd("shutdown -a");
}else if (request.StartsWith("SendString"))
{
var arr = request.Split('|');
if (arr.Length >= )
{
string str = arr[];
this.button1.BeginInvoke(new Action(() => {
mk.SendKeys(str);
})); }
} }
catch (Exception ex)
{
Log("ex|" + ex.Message + ex.StackTrace);
} Thread.Sleep();
}
});
t2.Start();
}
catch (Exception ex2)
{
Log("ex2|" + ex2.Message + ex2.StackTrace);
} Thread.Sleep();
} }); t.Start();
}

客户端


TcpClient tcpClient = new TcpClient();
bool isRunning = true;

private void button2_Click(object sender, EventArgs e)
{
tcpClient.Connect(new IPEndPoint(IPAddress.Parse("192.168.0.168"), Convert.ToInt32(this.textBox2.Text.Trim())));
MessageBox.Show("连接成功.");
} private void button1_Click(object sender, EventArgs e)
{ Thread t = new Thread(() =>
{
NetworkStream clientStream = tcpClient.GetStream(); string request = "SetTime|" + this.textBox1.Text.Trim(); byte[] requestBuffer = Encoding.Default.GetBytes(request); clientStream.Write(requestBuffer, , requestBuffer.Length); clientStream.Flush(); var buffer = new byte[];
while (isRunning)
{
clientStream.Read(buffer, , buffer.Length); string str = Encoding.Default.GetString(buffer).Trim();
if (str.StartsWith("ok"))
{
Invoke(() =>
{
MessageBox.Show("修改时间成功.");
}); }
Thread.Sleep();
}
});
t.Start(); this.button1.Enabled = false;
}

From:http://www.cnblogs.com/xuejianxiyang/p/5085077.html

c# tcp备忘及networkstream.length此流不支持查找解决的更多相关文章

  1. Stream转MemoryStream解决Stream.Length报错此流不支持查找操作

    1.StreamToMemoryStream MemoryStream StreamToMemoryStream(Stream instream) { MemoryStream outstream = ...

  2. [原]TCP/UDP使用细节备忘

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  3. TCP/IP 要点备忘

    1. 3次握手/4次挥手过程,以及状态变化: 2. RTT,TTL,TOS(8位服务类型,最小延时.最大吞吐.最高可用.最小费用). 3. TimeWait(2msl)状态,防止最后一个ack丢失 4 ...

  4. Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯

    Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...

  5. Bonobo Git Server (Simple git server for Windows.) 测试备忘

    Bonobo Git Server是一款Windows上的Git Server,它使用IIS即可,走的是Http协议,只要简单的安装就能使用,但是因为我的项目大小有1.35GB在 push 的时候一直 ...

  6. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

  7. Nmap备忘单:从探索到漏洞利用(Part 2)

    这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...

  8. JavaScript 教程学习进度备忘(二)

    备忘:之前,只将“JS 教程”学习完毕,这篇记录:“JS HTML DOM ”.“JS 对象”.“JS Window”.“JS 库” 书签:跳过:另外跳过的内容有待跟进 _______________ ...

  9. SSO之CAS备忘

    http://blog.chinaunix.net/uid-28380443-id-4740103.html 自己负责的公司基于CAS单点登录平台架构已经上线运行,很多细节的东西是时候备忘一下了,开源 ...

随机推荐

  1. MapReduce的一点理解

    对于MapReduce编程,大概率的流程用过的人或多或少都清楚,但是归结到细节上,就有的地方不清楚了,下面根据自己的疑问,加上从网上各处,找到的被人的描述,最自己的疑问做出回答. 1. MapRedu ...

  2. OpenCV 2.4.8组件结构全解析

    转自: http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构 ...

  3. window_x64微信小程序环境搭建

    所需文件地址如下: http://pan.baidu.com/s/1nv0IHhn(ylk7)   1.下载微信开发工具0.7.0_x64 安装完成后,打开程序,进行微信扫码登录 2.下载微信开发工具 ...

  4. jeos没有消亡,但看 debian 的 netinst .iso格式,那就是jeos的系统!

    曾经ubuntu推出专供轻量硬件(如虚拟机)方式的just os格式的.iso [小巧.轻量.快速.干净] 但在 ubuntu 8.04后 再也没有继续 ...... 可惜 不曾想,ubuntu的老爸 ...

  5. 一次流量稍高导致web项目慢的问题&解决

    项目上线后,用户越来越多,有一天出现一个issue:用户访问特别慢. 首先介绍下架构: haproxy/Nginx / \ node1 node2 | | redis redis(slave) | | ...

  6. Struts2的属性驱动与模型驱动的区别

    1.Struts2的属性驱动. Struts2的属性驱动指的是在action中JSP页面的每一个form中的name都对应在action中有一个属性与之对应.看下面代码片段: <form act ...

  7. ODAC(V9.5.15) 学习笔记(十八) 数据集缓冲模式

    数据集的缓冲模式(Cached mode)是将数据库服务器的数据缓冲在客户端内存中进行处理,不再依赖服务器.只有当数据需要提交数据库服务器进行保存时,才将变更数据一次性提交数据库服务器. 数据集缓冲模 ...

  8. Netty4 中的内存管理

    在Netty4中引入了新的内存管理机制极大地提升其性能,本文将对该内在管理机制进行剖析. 这里有篇文章讲述了在推特(Twitter)内部 使用Netty的状况以及Netty4所带来的性能收益. 在分析 ...

  9. Python Django 开发 3 数据库CURD

    上一篇表建好后开始对数据进行CURD操作 dos输入: >>>python manage.py shell 以下的命令都是在shell中测试 (C)增: >>>im ...

  10. Python Django 开发 2 数据库

    一半教程用的Django都是1.8以前的版本,导致跟我用的1.8.2的版本用法有些出入,所以只能自己去官网看文档,以下一下是看官方文档而理解的,英语渣渣,可能会有理解有误的地方 先记录下如何查看dja ...