我现在有一个线程每两秒钟像服务器,发送一个消息“s”,同时我要接收服务器返回一个“s”。还有一个线程,不确定在什么时候像服务器发送消息,发送完消息后服务器返回相应的消息,我同样需要接收。
我现在做了一个只是在不确定什么时候发送消息的线程,但是那个每两秒钟发送一个消息的线程我不知道应该怎么加。请师哥们指教。using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading;namespace ThreadExample
{
class Test
{
static TcpClient c;
static StreamReader sr;
static StreamWriter sw;
static ArrayList ReadArry = new ArrayList();
static void Main(string[] args)
{
c = new TcpClient();
c.Connect("127.0.0.1", 7908); sr = new StreamReader(c.GetStream(), Encoding.GetEncoding("GB2312"));
sw = new StreamWriter(c.GetStream(), Encoding.GetEncoding("GB2312")); Thread td = new Thread(new ThreadStart(Test.ReceiveData));
td.Start();
string str = "";
while (str != "o")
{
SendMessage(sw, Console.ReadLine());
System.Console.WriteLine("<<<<<<<");
}
} public static void SendMessage(StreamWriter sw,string Msg)
{
string str = Msg;
sw.WriteLine(str);
sw.Flush(); //ReadArry = new ArrayList();
ReadArry.Add(str);
} public static void GetMessage(string Msg)
{
/*
*如果在存放命令的可变数组里arry里,
* 需要循环取服务器,返回字符串里的首字母,
* 与存放输入命令的可变数字里arry相对应。
*/
for (int j = 0; j < ReadArry.Count; j++)
{
if (ReadArry[j].ToString().Substring(0, 1) == Msg.Substring(0, 1))//判断返回的字符串与输入的命令是否匹配
{
Console.WriteLine("成功");
ReadArry.RemoveAt(j);//如果匹配则把它从数组中删除
}
}
} public static void ReceiveData()
{
string s = "";
while (true)
{
while ((s = sr.ReadLine()).Length > 0)
{
MessageServer m = new MessageServer();
ArrayList arry = m.getMessage(s);
for (int i = 0; i < arry.Count; i++)
{
Console.WriteLine(arry[i].ToString());
GetMessage(arry[i].ToString());
}
//System.Console.WriteLine(s);
}
}
}
}
}
我现在做了一个只是在不确定什么时候发送消息的线程,但是那个每两秒钟发送一个消息的线程我不知道应该怎么加。请师哥们指教。using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading;namespace ThreadExample
{
class Test
{
static TcpClient c;
static StreamReader sr;
static StreamWriter sw;
static ArrayList ReadArry = new ArrayList();
static void Main(string[] args)
{
c = new TcpClient();
c.Connect("127.0.0.1", 7908); sr = new StreamReader(c.GetStream(), Encoding.GetEncoding("GB2312"));
sw = new StreamWriter(c.GetStream(), Encoding.GetEncoding("GB2312")); Thread td = new Thread(new ThreadStart(Test.ReceiveData));
td.Start();
string str = "";
while (str != "o")
{
SendMessage(sw, Console.ReadLine());
System.Console.WriteLine("<<<<<<<");
}
} public static void SendMessage(StreamWriter sw,string Msg)
{
string str = Msg;
sw.WriteLine(str);
sw.Flush(); //ReadArry = new ArrayList();
ReadArry.Add(str);
} public static void GetMessage(string Msg)
{
/*
*如果在存放命令的可变数组里arry里,
* 需要循环取服务器,返回字符串里的首字母,
* 与存放输入命令的可变数字里arry相对应。
*/
for (int j = 0; j < ReadArry.Count; j++)
{
if (ReadArry[j].ToString().Substring(0, 1) == Msg.Substring(0, 1))//判断返回的字符串与输入的命令是否匹配
{
Console.WriteLine("成功");
ReadArry.RemoveAt(j);//如果匹配则把它从数组中删除
}
}
} public static void ReceiveData()
{
string s = "";
while (true)
{
while ((s = sr.ReadLine()).Length > 0)
{
MessageServer m = new MessageServer();
ArrayList arry = m.getMessage(s);
for (int i = 0; i < arry.Count; i++)
{
Console.WriteLine(arry[i].ToString());
GetMessage(arry[i].ToString());
}
//System.Console.WriteLine(s);
}
}
}
}
}
解决方案 »
- EF中使用Expression拼接复合查询的问题!
- 问几个小问题,我不懂!
- 用checkbox和gridview控件实现选择多条记录并生成页面打印的功能
- excel sql 互相导入,里面的数据框架要一样吗?
- 不知道怎么写了! 帮忙下!
- 浮点数运算不解之谜?
- DataGrid(winform)能否在一行中一些单元格分为两行显示,也就是不同的列可以设置不同的单元格大小
- 发送
- C#绘图求救,非常急!!!
- 请问回调是指什么?是不是指递归?如蒙赐教,不胜感谢!!!!!
- Microsoft Visual Studio .NET 2003写C#程序写程序保存,预览都要老半天,慢的要死,什么原因
- 请问Windows程序给网页程序发送一条消息,并在网页中显示,怎样实现呢?
private void SendTime()
{
Thread.Sleep( 20000 );
//發送數據;
}別忘記using System.Threading;
private void SendTime()
{
while( true )
{
Thread.Sleep( 20000 );
//發送數據;
}
}別忘記using System.Threading;
那我在 Thread td = new Thread(new ThreadStart(Test.ReceiveData));
td.Start();
这里应该怎么应用那!
在你的receivedata()
{
while(true)
{
dosomething;
auto.waitone(2000,false);
}}保你成功!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
string s = "";
while (true)
{
Console.WriteLine(".................");
auto.WaitOne(2000, false);
while ((s = sr.ReadLine()).Length > 0)
{
MessageServer m = new MessageServer();
ArrayList arry = m.getMessage(s);
for (int i = 0; i < arry.Count; i++)
{
Console.WriteLine(arry[i].ToString());
GetMessage(arry[i].ToString());
}
//System.Console.WriteLine(s);
}
}
}我就这么加了啊!它并不是每两秒钟发一次消息啊!
http://www.hnce.net/Content/slick.238.html