Example #1
0
 private static byte[] GetResult(String mes)
 {
     try
     {
         Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
         mes = mes.TrimStart('1');
         mes = mes.TrimStart('/');
         mes = mes.TrimEnd(' ');
         byte[] result = Jisyos.Search(mes);
         if (result != null)
         {
             return(result);
         }
         else
         {
             var t = Task.Run(() => Google.Search(mes));
             t.Wait();
             byte[] u8 = Encoding.UTF8.GetBytes(t.Result);
             return(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("EUC-JP"), u8));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Example #2
0
        public static void Listen()
        {
            if (listener != null && accept)
            {
                // Continue listening.
                while (true)
                {
                    Console.WriteLine("Waiting for client...");
                    var connectResult = listener.AcceptTcpClientAsync();
                    if (connectResult.Result == null)
                    {
                        continue;
                    }
                    var client = connectResult.Result;
                    // var client = await listener.AcceptTcpClientAsync(); // Get the client

                    Console.WriteLine("Client connected. Waiting for data.");

                    string message = "";
                    while (message != null && !message.StartsWith("0"))
                    {
                        // byte[] data = Encoding.ASCII.GetBytes("Send next data: [enter 'quit' to terminate] ");
                        // client.GetStream().Write(data, 0, data.Length);
                        byte[]       data      = null;
                        MemoryStream ms        = new MemoryStream();
                        byte[]       resBytes  = new byte[512];
                        int          resSize   = 0;
                        Boolean      connected = true;
                        do
                        {
                            // resSize = await client.GetStream().ReadAsync(resBytes, 0, resBytes.Length);
                            resSize = client.GetStream().Read(resBytes, 0, resBytes.Length);
                            if (resSize == 0)
                            {
                                connected = false;
                                break;
                            }
                            ms.Write(resBytes, 0, resSize);
                        } while (client.GetStream().DataAvailable || resBytes[resSize - 1] != '\n');
                        if (connected)
                        {
                            // message = Encoding.ASCII.GetString(buffer);
                            ArraySegment <byte> bf = new ArraySegment <byte>();
                            ms.TryGetBuffer(out bf);
                            message = Encoding.UTF8.GetString(bf.Array, 0, resSize);
                            if (!message.StartsWith("0"))
                            {
                                message = message.TrimEnd('\n');
                                Console.WriteLine(message);
                                String result = Jisyos.Search(message);
                                Console.WriteLine(result);
                                if (!String.IsNullOrWhiteSpace(result))
                                {
                                    byte[] u8 = Encoding.UTF8.GetBytes(result + '\n');
                                    data = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("EUC-JP"), u8);
                                }
                                else
                                {
                                    byte[] u8 = Encoding.UTF8.GetBytes(Google.Search(message) + '\n');
                                    data = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("EUC-JP"), u8);
                                    // data = Encoding.UTF8.GetBytes("Not found..." + '\n');
                                }
                                // await client.GetStream().WriteAsync(data, 0, data.Length);
                                client.GetStream().Write(data, 0, data.Length);
                            }
                        }
                    }
                    Console.WriteLine("Closing connection.");
                    client.GetStream().Dispose();
                    client.Dispose();
                }
            }
        }