簡體   English   中英

如何將此(請參見下面的代碼)轉換為C#?

[英]how to translate this (see the code below )to C#?

如何將此轉換為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); 
} 
}

這樣的事情應該起作用:

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);
        }
    }
}

編輯:但是要小心編碼

看一下MSDN上的TCPListener示例 這與您上面要進行的操作非常相似,將一些差異移植進去應該很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM