[英]C# tcp sockets defining clients
我正在嘗試使用Visual Studio 2010設置tcp .net套接字網絡。到目前為止,它可以正常工作,我可以將客戶端連接到該網絡,但是目前我無法定義所連接的客戶端。 我需要像一組已連接的客戶端,以便我可以更具體地了解與streamWrite的對象。
這是我的服務器代碼,我正在從http://www.codeproject.com/Articles/511814/Multi-client-per-one-server-socket-programming-in復制所有這些代碼
服務器代碼
static TcpListener tcpListener = new TcpListener(25000);
static void Listeners()
{
Socket socketForClient = tcpListener.AcceptSocket();
if (socketForClient.Connected)
{
Console.WriteLine("Client:"+socketForClient.RemoteEndPoint+" now connected to server.");
NetworkStream networkStream = new NetworkStream(socketForClient);
System.IO.StreamWriter streamWriter =
new System.IO.StreamWriter(networkStream);
System.IO.StreamReader streamReader =
new System.IO.StreamReader(networkStream);
Console.WriteLine("type your message to be recieved by client:");
string theString2 = Console.ReadLine();
streamWriter.WriteLine(theString2);
Console.WriteLine(theString2);
streamWriter.Flush();
while (true)
{
string theString = streamReader.ReadLine();
Console.WriteLine("Message recieved by client:" + theString);
if (theString == "exit")
break;
}
streamReader.Close();
networkStream.Close();
streamWriter.Close();
}
socketForClient.Close();
Console.WriteLine("Press any key to exit from server program");
Console.ReadKey();
}
public static void Main()
{
tcpListener.Start();
Console.WriteLine("************This is Server program************");
Console.WriteLine("Hoe many clients are going to connect to this server?:");
int numberOfClientsYouNeedToConnect = int.Parse(Console.ReadLine());
for (int i = 0; i < numberOfClientsYouNeedToConnect; i++)
{
Thread newThread = new Thread(new ThreadStart(Listeners));
newThread.Start();
}
}
如果要堅持使用原始TCP套接字,則可以將委托/處理程序等傳遞給線程:
for (int i = 0; i < numberOfClientsYouNeedToConnect; i++)
{
Thread newThread = new Thread(new ParameterizedThreadStart(Listeners));
newThread.Start(i);
}
然后,您的偵聽器需要獲取一個object
以匹配ParametrizedThreadStart
請參見MSDN。
但是,如果您正在開發兩端(如我所評論),那么我建議針對這種情況使用諸如ASP.NET SignalR之類的更抽象的東西。 它增加了一些開銷,但是您可以在方便抽象的級別上獲得服務器到客戶端的通信,反之亦然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.