java—如何将此(请参阅下面的代码)转换为c#?

pcrecxhr  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(349)

如何把这个翻译成c#

import java.io.*; 
import java.net.*; 

 class SimpleServer 
 { 
private static SimpleServer server; 
ServerSocket socket; 
Socket incoming; 
BufferedReader readerIn; 
PrintStream printOut; 

public static void main(String[] args) 
{ 
    int port = 8080; 

    try 
    { 
        port = Integer.parseInt(args[0]); 
    } 
    catch (ArrayIndexOutOfBoundsException e) 
    { 
        // Catch exception and keep going. 
    } 

    server = new SimpleServer(port); 
} 

private SimpleServer(int port) 
{ 
    System.out.println(">> Starting SimpleServer"); 
    try 
    { 
        socket = new ServerSocket(port); 
        incoming = socket.accept(); 
        readerIn = new BufferedReader(new InputStreamReader(incoming.getInputStream())); 
        printOut = new PrintStream(incoming.getOutputStream()); 
        printOut.println("Enter EXIT to exit.\r"); 
        out("Enter EXIT to exit.\r"); 
        boolean done = false; 
        while (!done) 
        { 
            String str = readerIn.readLine(); 
            if (str == null) 
            { 
                done = true; 
            } 
            else 
            { 
                out("Echo: " + str + "\r"); 
                if(str.trim().equals("EXIT")) 
                { 
                    done = true; 
                } 
            } 
            incoming.close(); 
        } 
    } 
    catch (Exception e) 
    { 
        System.out.println(e); 
    } 
} 

private void out(String str) 
{ 
    printOut.println(str); 
    System.out.println(str); 
} 
}
ssm49v7z

ssm49v7z1#

看看msdn上的tcplistener示例。它与上面所做的非常相似,移植这些差异应该很容易。

qgelzfjb

qgelzfjb2#

这样的方法应该有用:

using System;
using System.IO;
using System.Net.Sockets;
using System.Text;

namespace Server
{
    internal class SimpleServer
    {
        private static SimpleServer server;
        private readonly TcpListener socket;

        private SimpleServer(int port)
        {
            Console.WriteLine(">> Starting SimpleServer");
            socket = new TcpListener(port);
            socket.Start(); 
        }

        private void DoJob()
        {
            try
            {
                bool done = false;
                while (!done)
                {
                    TcpClient client = socket.AcceptTcpClient();
                    NetworkStream stream = client.GetStream();
                    var reader = new StreamReader(stream, Encoding.UTF8);
                    String str = reader.ReadLine();
                    if (str == null)
                    {
                        done = true;
                    }
                    else
                    {
                        printOut(str, stream);
                        if (str.Trim() == "EXIT")
                        {
                            done = true;
                        }
                    }
                    client.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        public static void main(String[] args)
        {
            int port = 8080;

            try
            {
                port = Int32.Parse(args[0]);
            }
            catch (Exception e)
            {
                // Catch exception and keep going. 
            }

            server = new SimpleServer(port);
            server.DoJob();
        }

        private void printOut(String str, Stream stream)
        {
            byte[] bytes = Encoding.UTF8.GetBytes("Echo: " + str + "\r\n");
            stream.Write(bytes, 0, bytes.Length);
            Console.WriteLine(str);
        }
    }
}

编辑:但要注意编码

相关问题