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单点登录平台架构已经上线运行,很多细节的东西是时候备忘一下了,开源 ...
随机推荐
- jquery获取元素的值,获取当前对象的父对象等等
jsp代码: <span><input type="hidden" value="1" id="newInfo">& ...
- jquery.pjax.js bug问题解决集锦
jquery.pjax 是一个很好的局部刷新插件,但实际应用过程是还是会有很多小问题,部分问题解决如下: 1.pjax 局部加载时候,IE 存在缓存问题,很容易理解,pjax是通过jquery的aja ...
- WinForm数据源分页技术
1.编写分页存储过程 USE [Contacts]GO create procedure [dbo].[GetPageData] (@startIndex int,@endIndex int)asbe ...
- Oracle 一次生产分库,升级,迁移
今天完成了一个负载较高的中央数据库的分库操作, 并实现了oracle的滚动升级(10.2.0.1->10.2.0.4), 业务中断仅15分钟. 平台: RHEL AS 4 + Oracle 10 ...
- AX2012 R3升级CU8的一些错误
AX2012 R3安装升级包CU8后进入系统,系统会提示打开软件升级清单“Software update checklist”,清单列出了升级要做的一系列动作. 在进行到编译应用时“Compile a ...
- [转]silverlight Datagrid 行上增加ToolTip
有两种办法: 1. 直接在后台处理在数据绑定后 ,注册LoadingRow 事件this.DataGrid.LoadingRow += new EventHandler<DataGridRowE ...
- kail2在虚拟机上的安装
首先先要安装虚拟机,打开安装包,下一步 选择典型 选择要安装到的目录,点下一步 4 输入密钥,下一步(密钥网上有很多我这边就例举一个,没用的话就自己找.我这个密钥是VM11 ...
- WPF中如何用代码触发按钮Click处理
btnOk.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
- centos 7 卸载 mariadb 的正确命令
#列出所有被安装的rpm package rpm -qa | grep mariadb #卸载 rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64 错误:依赖检测失败: ...
- Go加密解密之RSA[转]
安全总是很重要的,各个语言对于通用的加密算法都会有实现.前段时间,用Go实现了RSA和DES的加密解密,在这分享一下.(对于RSA和DES加密算法本身,请查阅相关资料) 在PHP中,很多功能经常是一个 ...