请问如下c++代码为什么编 译不过?
// Simple TCP/IP Server.
#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::Threading;
using namespace System::IO;
#define HOSTNAME S"localhost"
#define PORT 9000
public __gc class Worker
{
private:
TcpClient *client_socket;
void service(StreamReader *reader, StreamWriter *writer)
{
Console::WriteLine(reader->ReadLine());
writer->WriteLine("Response");
writer->Flush();
}
void service(Stream *stream)
{
StreamReader *reader = NULL;
StreamWriter *writer = NULL;
try
{
reader = new StreamReader(stream);
writer = new StreamWriter(stream);
service(reader, writer);
}
__finally
{
try
{
if(reader != NULL)
{
reader->Close();
}
}
__finally
{
if(writer != NULL)
{
writer->Close();
}
}
}
}
void service(TcpClient *client_socket)
{
Stream *stream = client_socket->GetStream();
try
{
service(stream);
}
__finally
{
stream->Close();
}
}
void run()
{
try
{
Console::WriteLine("Worker started.");
service(client_socket);
}
__finally
{
Console::WriteLine("Worker stopped.");
client_socket->Close();
}
}
public:
Worker(TcpClient *client_socket)
{
this->client_socket = client_socket;
Thread *thread = new Thread(new ThreadStart(this, run));
thread->Start();
}
};
public __gc class Server
{
private:
IPAddress *address;
int port;
void run()
{
TcpListener *server_socket = new TcpListener(address, port);
try
{
server_socket->Start();
Console::WriteLine("Server started.");
while(true)
{
new Worker(server_socket->AcceptTcpClient());
}
}
__finally
{
Console::WriteLine("Server stopped.");
server_socket->Stop();
}
}
void init(IPAddress *address, int port)
{
this->address = address;
this->port = port;
Thread *thread = new Thread(new ThreadStart(this, run));
thread->Start();
}
public:
Server(IPAddress *address, int port)
{
init(address, port);
}
Server(String *hostname, int port)
{
init(Dns::Resolve(hostname)->AddressList[0], port);
}
};
int _tmain(int argc, char* argv[])
{
String *hostname;
int port;
if(argc == 1)
{
hostname = HOSTNAME;
port = PORT;
}
else if(argc == 2)
{
hostname = argv[1];
port = PORT;
}
else
{
hostname = argv[1];
port = Int32::Parse(argv[2]);
}
new Server(hostname, port);
return 0;
}
我用vs2005编译的,会有如下错误:
1>.\tServer.cpp(96) : error C3867: “Worker::run”: 函数调用缺少参数列表;请使用“&Worker::run”创建指向成员的指针
1>.\tServer.cpp(96) : error C3350: “System::Threading::ThreadStart”: 委托构造函数需要 2 个参数
1>.\tServer.cpp(135) : error C3867: “Server::run”: 函数调用缺少参数列表;请使用“&Server::run”创建指向成员的指针
1>.\tServer.cpp(135) : error C3350: “System::Threading::ThreadStart”: 委托构造函数需要 2 个参数
是不是我的托管环境没有设置?我应该怎么设置环境能编译通过?