如何在一台服务器上创建多个客户端?
问题描述:
如何创建多个客户是代码如何在一台服务器上创建多个客户端?
的Program.cs
class Program
{
static void Main(string[] args)
{
Server.ServerCode(5656);
}
}
Client.cs
class Client
{
public static void ClientCode()
{
//SOCKET CONNECTION
//int Port = (int)port;
Console.WriteLine("......................CLIENT.........................");
TcpClient client = new TcpClient("127.0.01", 5656);
NetworkStream clientStream = client.GetStream();
StreamReader sr = new StreamReader(clientStream);
StreamWriter sw = new StreamWriter(clientStream);
sw.AutoFlush = true;
//CLOSING SOCKET
clientStream.Close();
client.Close();
Console.ReadLine();
}
}
我的服务器代码:
sereve.cs
class Server
{
public static void ServerCode(object port)
{
//SOCKET CONNECTION
int Port = (int)port;
Console.WriteLine("................SERVER RUNNING......................");
TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), Port);
listener.Start();
while (true)
{
TcpClient serverSite = listener.AcceptTcpClient();
if (serverSite.Connected)
{
Thread c = new Thread((fileTransfer));
c.Start(serverSite);
}
}
}
public static void fileTransfer(object clients)
{
Console.WriteLine("new client");*/
TcpClient server = listener.AcceptTcpClient();//(TcpClient)clients;
NetworkStream serverStream = server.GetStream();
StreamReader sr = new StreamReader(serverStream);
StreamWriter sw = new StreamWriter(serverStream);
sw.AutoFlush = true;
//CHECKING USERNAME AND PASSWORD
Console.WriteLine("Connecting to Client... ");
string fromClient_u = sr.ReadLine();
Console.WriteLine("\n Username: " + fromClient_u);
string fromClient_p = sr.ReadLine();
Console.WriteLine("\n Password: *******");
if (fromClient_u == "Client1" && fromClient_p == "123456")
{
Console.WriteLine("\nClient has Successfully Loged In. ");
sw.WriteLine("Connection Complete... "); //msg1
sw.WriteLine("Successfully Connected to the Server."); //msg2
sw.WriteLine("Enter Some Informations for File Transfer..."); //msg3
}
//CLOSING SOCKET
serverStream.Close();
server.Close();
Console.ReadLine();
}
}
它不能正常工作。我想要第一个线程工作并结束,然后第二个线程开始。但是此代码一次生成所有三种威胁。我的观点是,多个客户端将由此代码创建,他们将等待。当第一个客户端与服务器一起工作时,第二个客户端将获得服务器连接。
答
简单,因为它可能声音,如果你想,直到客户端,然后锁定过程开始下一个,只是循环,并明确地呼吁:
for (i=0;i<3;i++)
{
Client.ClientCode();
}
+0
这个作品太.....哇!非常感谢。 @ Mt.Scheniders – Giliweed 2013-02-10 22:31:05
答
如果不提供服务器代码,也很难知道问题是否存在。如果有帮助的话可以有一个比较结账这篇文章,关于如何create a quick client and server application。该示例还允许任意数量的客户端,尽管它们必须作为独立进程启动,而不是线程。
要一次只能运行一个客户端,你可以尝试改变你的出发代码如下:
for (i = 0; i < 3; i++)
{
t[i].Start();
t[i].Join();
}
请扩大“在其不工作”。你看到什么错误?什么时候做什么? – 2013-02-10 21:29:10
'lock(obje)'的含义是什么? – 2013-02-10 21:30:39
没有错误,但是当整个代码一次运行所有的线程时。我想要一个线程一次访问一个服务器。 @ImmortalBlue – Giliweed 2013-02-10 22:06:25