像這樣的東西應該做的你,雖然我敢肯定,我錯過一噸的異常情況處理和次要之類的東西,哦,正常關閉服務器。
static void Main(string[] args)
{
string localMachineName = Dns.GetHostName() ;
IPHostEntry localMachineInfo = Dns.GetHostEntry(localMachineName) ;
IPAddress localMachineAddress = localMachineInfo.AddressList[0] ;
IPEndPoint localEndPoint = new IPEndPoint(localMachineAddress , PORT_NUMBER) ;
using (Socket server = new Socket(localEndPoint.AddressFamily , SocketType.Stream , ProtocolType.Tcp))
{
server.Bind( localEndPoint ) ;
server.Listen(PENDING_CONNECTIONS_QUEUE_LENGTH) ;
while (true)
{
using (Socket connection = server.Accept() )
using (NetworkStream connectionStream = new NetworkStream(connection , FileAccess.Read , false))
using (TextReader connectionReader = new StreamReader( connectionStream , Encoding.UTF8 ))
{
IPEndPoint remoteEndpoint = (IPEndPoint) connection.RemoteEndPoint ;
string line ;
while (null != (line=connectionReader.ReadLine()))
{
line = line.Trim() ;
Console.WriteLine("Client says: {0}" , line) ;
if (string.Equals("exit" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
if (string.Equals("quit" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
if (string.Equals("goodbye" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
if (string.Equals("good-bye" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
}
connection.Shutdown(SocketShutdown.Both) ;
connection.Close() ;
}
}
}
}
如果你希望緩衝流,只需用BufferedStream
裝飾NetworkStream
實例:
using (Socket connection = server.Accept() )
using (Stream connectionStream = new NetworkStream(connection , FileAccess.Read , false ))
using (TextReader connectionReader = new StreamReader(new BufferedStream(connectionStream) , Encoding.UTF8))
{
IPEndPoint remoteEndpoint = (IPEndPoint) connection.RemoteEndPoint ;
string line ;
while (null != (line=connectionReader.ReadLine()))
{
line = line.Trim() ;
Console.WriteLine("Client says: {0}" , line) ;
if (string.Equals("exit" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
if (string.Equals("quit" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
if (string.Equals("goodbye" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
if (string.Equals("good-bye" , line , StringComparison.InvariantCultureIgnoreCase)) break ;
}
connection.Shutdown(SocketShutdown.Both) ;
connection.Close() ;
}
我認爲你是在C#中尋找'StreamReader'。 – HenryZhang 2012-08-17 16:36:26