Gå til innhold

C#: TcpListener med brukernavn og passord


Anbefalte innlegg

Heisann

 

Jeg har en TcpListener som står i en loop og venter på innkommende TcpClienter, og dette fungerer utmerket. Men jeg vil gjerne at hver TcpClient skal gi med brukernavn og passord for å connecte. Noen som vet hvordan jeg kan gjøre dette?

 

Her er koden jeg bruker for å godkjenne connections:

while (true)
			{
				//blocks until a client has connected to the server
				TcpClient client = tcpListener.AcceptTcpClient();

				//checks if the client is blacklisted
				if (FindBlacklistClient(EndPointParser(EndPointParseType.IP, client.Client.RemoteEndPoint)))
				{
					//client is blacklisted. Disconnect client
					SendMessage(client, FindBlacklistReason(EndPointParser(EndPointParseType.IP, client.Client.RemoteEndPoint)));
					client.Close();
					continue;
				}

				connectedClients.Add(client);
				leaveReason.Add(client.Client.RemoteEndPoint.ToString() + ":dc");
				Activity(ActivityType.Connected, EndPointParser(EndPointParseType.IP, client.Client.RemoteEndPoint), Convert.ToInt32(EndPointParser(EndPointParseType.Port, client.Client.RemoteEndPoint)), "");

				//create a thread to handle communication with client
				Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
				clientThread.Start(client);
			}

Lenke til kommentar
Videoannonse
Annonse

Ja, regna jo med det, men bare lurer på hvordan jeg skal gjøre det. Er det mulig å kjøre no kode før en client blir accepted?

Har du noen eksempler/ideer på hvordan jeg kan få det til?

Finnes det annen metode å godkjenne connections på med brukernavn og passord utenom TcpListener?

Endret av miXer
Lenke til kommentar
Gjest Slettet-aNZFa3

Klienten sender brukernavnet og passordet, tcplistener tar imot tilkoblingen, sjekker om brukenavn og passord er riktig, hvis ikke, så bare stenger den tilkoblingen til klienten.

Lenke til kommentar

[ISerializable()]
public class ConnectionData
{
 private string username;
 private long password;
 public string UserName { get { return username; } set { username = value; }}
 public long Password { get { return password; }set { password = value; }}
 public void SetPassword(string psw)
 {
var md5 = System.Security.Cryptography.MD5.Create();
password = BitConverter.ToInt64(md5.CreateHash(Encoding.Unicode.GetBytes(psw)));
 }
}

Denne kan du skrive til streamen med BinaryFormatter.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...