我编写了这段代码来检查文件中的特定字符串。现在它检查字符串。但是我怎样才能将回复说“它存在”发回给客户呢?服务器端程序应该有所有的代码。它还接受多个客户端。
该程序的程序如下
基本上,如果客户想要检查文件中是否有特定的字符串(单词),他会通过 telnet 上的端口连接此代码。他输入他想要搜索的字符串(在 telnet 上)并将其发送到服务器端。这个服务器端程序会从文件中为他检查。如果它存在,它会向客户端发送一条消息,说“文件中存在字符串”,如果不存在,它应该发送一条消息说“它不是”。
搜索字符串(“hello”)在这个程序中。如何使客户端能够从客户端(telnet)搜索它?这是我得到很多帮助和教程的地方。有人可以帮帮我吗?
已编辑 - 我已更改代码,以便将回复发送回客户端。我现在需要知道的是,我怎样才能让客户端通过客户端(telnet)搜索(输入他想要搜索的单词)?任何帮助将不胜感激。我也更新了我的代码。
谢谢你。
class Program
{
static void Main(string[] args)
{
IPAddress ipad = IPAddress.Parse("127.0.0.1");
TcpListener serversocket = new TcpListener(ipad, 8888);
TcpClient clientsocket = default(TcpClient);
Byte[] bytes = new Byte[256];
serversocket.Start();
Console.WriteLine(">> Server Started");
while(true)
{
clientsocket = serversocket.AcceptTcpClient();
Console.WriteLine("Accepted Connection From Client");
LineMatcher lm = new LineMatcher(clientsocket);
Thread thread = new Thread(new ThreadStart(lm.Run));
thread.Start();
Console.WriteLine("Client connected");
}
Console.WriteLine(" >> exit");
Console.ReadLine();
clientsocket.Close();
serversocket.Stop();
}
}
public class LineMatcher
{
public string fileName = "c:/myfile2.txt";
private TcpClient _client;
public LineMatcher(TcpClient client)
{
_client = client;
}
public void Run()
{
byte[] data = new byte[256];
NetworkStream strm = _client.GetStream();
try
{
using (var r = new StreamReader("c:/myfile2.txt"))
{
string line = "";
bool done = false;
int lineNumber = 0;
String s = r.ReadToEnd();
ASCIIEncoding encoder = new ASCIIEncoding();
while (String.IsNullOrEmpty(s))
{
data = encoder.GetBytes("There is no data in the file.");
Console.WriteLine("There is no data in the file.");
}
if (s.IndexOf("hello", StringComparison.CurrentCultureIgnoreCase) >= 0)
{
data = encoder.GetBytes("It is Present.");
}
else
{
data = encoder.GetBytes("It is not Present");
}
}
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.ToString());
}
strm.Write(data, 0, data.Length);
strm.Flush();
Console.WriteLine("Closing client");
_client.Close();
}
}