c# tcp备忘及networkstream.length此流不支持查找解决
服务端
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此流不支持查找解决的更多相关文章
- Stream转MemoryStream解决Stream.Length报错此流不支持查找操作
1.StreamToMemoryStream MemoryStream StreamToMemoryStream(Stream instream) { MemoryStream outstream = ...
- [原]TCP/UDP使用细节备忘
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- TCP/IP 要点备忘
1. 3次握手/4次挥手过程,以及状态变化: 2. RTT,TTL,TOS(8位服务类型,最小延时.最大吞吐.最高可用.最小费用). 3. TimeWait(2msl)状态,防止最后一个ack丢失 4 ...
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯
Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...
- Bonobo Git Server (Simple git server for Windows.) 测试备忘
Bonobo Git Server是一款Windows上的Git Server,它使用IIS即可,走的是Http协议,只要简单的安装就能使用,但是因为我的项目大小有1.35GB在 push 的时候一直 ...
- Nmap备忘单:从探索到漏洞利用(Part 4)
这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...
- Nmap备忘单:从探索到漏洞利用(Part 2)
这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...
- JavaScript 教程学习进度备忘(二)
备忘:之前,只将“JS 教程”学习完毕,这篇记录:“JS HTML DOM ”.“JS 对象”.“JS Window”.“JS 库” 书签:跳过:另外跳过的内容有待跟进 _______________ ...
- SSO之CAS备忘
http://blog.chinaunix.net/uid-28380443-id-4740103.html 自己负责的公司基于CAS单点登录平台架构已经上线运行,很多细节的东西是时候备忘一下了,开源 ...
随机推荐
- mssql2012以后新增的offset分页,看起来爽死了!!!
有没有办法让那时间显示精确到毫秒级呢!!! 2016年12月01日更新 正式用到项目中的时候才发现大坑,那个排序字段必须形成唯一 ,要不然就分页失败的 ...
- VS2010安装失败解决办法
1. 运行regedit打开注册表: 2. 找到HKEY_LOCAL_MACHINE\SOFWARE\ Microsoft\ Internet Explorer\ MAIN: 3. MAIN子键的权限 ...
- Asp.net中的ajax回调模式(ICallbackEventHandler)
客户端回调本质上就是指通过前端的客户端脚本向服务器端传递相应的数据参数,服务器端再以接受到的参数进行查询和处理,最后将结果回传到客户端进行显示.asp.net 2.0提供了实现无刷新回调的接口ICal ...
- Android软件安全开发实践(下)
Android开发是当前最火的话题之一,但很少有人讨论这个领域的安全问题.本系列将分两期,探讨Android开发中常见的安全隐患和解决方案.第一期将从数据存储.网络通信.密码和认证策略这三个角度,带你 ...
- Log4Net简单使用
一. Log4net是什么.优点 用来记录程序日志,优点:1.提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug:2.日志信息可以输出到不同的地方(数据库,文件,邮箱等). 二. L ...
- Workday为何迟迟不进入中国
全球知名HRM SaaS厂商Workday在世界各地攻城拔寨,俨然是HR SaaS的代名词,更是HRM市场的领导品牌.但是却单单在中国市场悄无声息,除了为数不多的海尔海外.联想海外等规模客户和部分ro ...
- Eclipse 常用最新插件.标记
Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 http://marketplace.eclipse.org/content/propertie ...
- 一起做RGB-D SLAM 第二季 (二)
本节目标 我们要实现一个基本的文件IO,用于读取TUM数据集中的图像.顺带的,还要做一个参数文件的读取. 设计参数文件读取的类:ParameterReader 首先,我们来做一个参数读取的类.该类读取 ...
- [原]如何在Android用FFmpeg+SDL2.0解码声音
关于如何在Android上用FFmpeg+SDL2.0解码显示图像参考[原]如何在Android用FFmpeg+SDL2.0解码显示图像 ,本文是基于上述文章和[原]零基础学习视频解码之解码声音 来移 ...
- Android源码下载并绑定到Eclipse中
在Windows下,通过SDK Manager.exe更新下载的Android,是不带源码的,我们开发开发起来不是很方便: 其实Android的源代码是可以下载的,其源代码入在http://andro ...