Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONNEXION DE TYPE TCP/IP


Information sur la source

Catégorie :Réseaux & Internet Source .NET ( DotNet ) Classé sous : connection, connexion, tcp, ip Niveau : Initié Date de création : 18/06/2002 Date de mise à jour : 23/12/2002 15:51:33 Vu : 17 111

Note :
7,63 / 10 - par 8 personnes
7,63 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Ca peut vous être utile, surtout pour comprendre le fonctionnement des sockets, et plus particulièrement de la classe TcpClient.  
 

Source

  • namespace TcpConnection
  • {
  • using System;
  • using System.Net;
  • using System.Net.Sockets;
  • using System.Text;
  • using System.IO;
  • public class Connection
  • {
  • public enum State
  • {
  • Disconnected,
  • Connected
  • }
  • public delegate void DelegToWrite(string Text);
  • private State _StateConn;
  • private DelegToWrite _OnTextToWrite;
  • private TcpClient _TcpConnect;
  • private NetworkStream _Ns;
  • private string _HostName;
  • private IPAddress _IP;
  • private int _Port;
  • private string _Sent;
  • private string _Received;
  • private byte[] _bReceived;
  • private int _RecSize;
  • public State StateConn
  • {
  • get{return _StateConn;}
  • }
  • public DelegToWrite OnTextToWrite
  • {
  • get{return _OnTextToWrite;}
  • set{_OnTextToWrite = value;}
  • }
  • public string HostName
  • {
  • get{return _HostName;}
  • }
  • public IPAddress IP
  • {
  • get{return _IP;}
  • }
  • public int Port
  • {
  • get{return _Port;}
  • }
  • public string Sent
  • {
  • get{return _Sent;}
  • }
  • public string Received
  • {
  • get{return _Received;}
  • }
  • public string AsyncReceived
  • {
  • get{return Encoding.ASCII.GetString(_bReceived, 0, _RecSize);}
  • }
  • public Connection(string HostName, int Port)
  • {
  • _StateConn = State.Disconnected;
  • _HostName = HostName;
  • _Port = Port;
  • _bReceived = new byte[1024];
  • IPHostEntry HostInfo = Dns.Resolve(HostName);
  • _IP = HostInfo.AddressList[0];
  • }
  • public Connection(IPAddress IP, int Port)
  • {
  • _StateConn = State.Disconnected;
  • _HostName = String.Empty;
  • _IP = IP;
  • _Port = Port;
  • _bReceived = new byte[1024];
  • }
  • public void Connect()
  • {
  • if(_StateConn == State.Connected)
  • return;
  • try
  • {
  • _TcpConnect = new TcpClient();
  • _TcpConnect.Connect(new IPEndPoint(_IP, _Port));
  • _Ns = _TcpConnect.GetStream();
  • _StateConn = State.Connected;
  • }
  • catch(Exception e)
  • {
  • _StateConn = State.Disconnected;
  • throw e;
  • }
  • }
  • public void Disconnect()
  • {
  • try
  • {
  • _Ns.Close();
  • _TcpConnect.Close();
  • }
  • catch
  • {
  • }
  • finally
  • {
  • _StateConn = State.Disconnected;
  • }
  • }
  • public void SendToServer(string Text)
  • {
  • if(_StateConn == State.Disconnected)
  • return;
  • byte[] bText = Encoding.ASCII.GetBytes(Text.ToCharArray());
  • _Sent = Text;
  • try
  • {
  • _Ns.Write(bText, 0, bText.Length);
  • }
  • catch
  • {
  • try
  • {
  • _Ns.Write(bText, 0, bText.Length);
  • }
  • catch(Exception e)
  • {
  • _StateConn = State.Disconnected;
  • throw e;
  • }
  • }
  • }
  • public string GetFromServer()
  • {
  • if(_StateConn == State.Disconnected)
  • return String.Empty;
  • StreamReader Sr = null;
  • _Received = String.Empty;
  • try
  • {
  • Sr = new StreamReader(_Ns);
  • while(Sr.Peek() > -1)
  • {
  • _Received += Sr.ReadLine() + "\r\n";
  • }
  • return _Received;
  • }
  • catch(Exception e)
  • {
  • _Received = String.Empty;
  • throw e;
  • }
  • }
  • public void GetFromServerAsync()
  • {
  • AsyncCallback Acb = new AsyncCallback(OnReceived);
  • _Ns.BeginRead(_bReceived, 0, _bReceived.Length, Acb, _TcpConnect);
  • }
  • private void OnReceived(IAsyncResult Ar)
  • {
  • TcpClient Client = (TcpClient)Ar.AsyncState;
  • NetworkStream Ns = Client.GetStream();
  • int Size = Ns.EndRead(Ar);
  • if(Size>0)
  • {
  • _RecSize = Size;
  • if(_OnTextToWrite != null)
  • _OnTextToWrite(AsyncReceived);
  • GetFromServerAsync();
  • }
  • else
  • {
  • _StateConn = State.Disconnected;
  • }
  • }
  • public override string ToString()
  • {
  • return _IP.ToString();
  • }
  • }
  • }
namespace TcpConnection
{
	using System;
	using System.Net;
	using System.Net.Sockets;
	using System.Text;
	using System.IO;

	public class Connection
	{
		public enum State
		{
			Disconnected,
			Connected
		}
		public delegate void DelegToWrite(string Text);

		private State _StateConn;
		private DelegToWrite _OnTextToWrite; 
		private TcpClient _TcpConnect;
		private NetworkStream _Ns;
		private string _HostName;
		private IPAddress _IP;
		private int _Port;
		private string _Sent;
		private string _Received;
		private byte[] _bReceived;
		private int _RecSize;

		public State StateConn
		{
			get{return _StateConn;}
		}

		public DelegToWrite OnTextToWrite
		{
			get{return _OnTextToWrite;}
			set{_OnTextToWrite = value;}
		}

		public string HostName
		{
			get{return _HostName;}
		}

		public IPAddress IP
		{
			get{return _IP;}
		}

		public int Port
		{
			get{return _Port;}
		}

		public string Sent
		{
			get{return _Sent;}
		}

		public string Received
		{
			get{return _Received;}
		}

		public string AsyncReceived
		{
			get{return Encoding.ASCII.GetString(_bReceived, 0, _RecSize);}
		}

		public Connection(string HostName, int Port)
		{
			_StateConn = State.Disconnected;
			_HostName = HostName;
			_Port = Port;
			_bReceived = new byte[1024];

			IPHostEntry HostInfo = Dns.Resolve(HostName);
			_IP = HostInfo.AddressList[0];
		}

		public Connection(IPAddress IP, int Port)
		{
			_StateConn = State.Disconnected;
			_HostName = String.Empty;
			_IP = IP;
			_Port = Port;
			_bReceived = new byte[1024];
		}

		public void Connect()
		{
			if(_StateConn == State.Connected)
				return;

			try
			{
				_TcpConnect = new TcpClient();
				_TcpConnect.Connect(new IPEndPoint(_IP, _Port));
				_Ns = _TcpConnect.GetStream();
				_StateConn = State.Connected;
			}
			catch(Exception e)
			{
				_StateConn = State.Disconnected;
				throw e;
			}
		}

		public void Disconnect()
		{
			try
			{
				_Ns.Close();
				_TcpConnect.Close();
			}
			catch
			{
			}
			finally
			{
				_StateConn = State.Disconnected;
			}
		}

		public void SendToServer(string Text)
		{
			if(_StateConn == State.Disconnected)
				return;

			byte[] bText = Encoding.ASCII.GetBytes(Text.ToCharArray());
			_Sent = Text;

			try
			{
				_Ns.Write(bText, 0, bText.Length);
			}
			catch
			{
				try
				{
					_Ns.Write(bText, 0, bText.Length);
				}
				catch(Exception e)
				{
					_StateConn = State.Disconnected;
					throw e;
				}
			}
		}

		public string GetFromServer()
		{
			if(_StateConn == State.Disconnected)
				return String.Empty;

			StreamReader Sr = null;
			_Received = String.Empty;

			try
			{
				Sr = new StreamReader(_Ns);

				while(Sr.Peek() > -1)
				{
					_Received += Sr.ReadLine() + "\r\n";
				}

				return _Received;
			}
			catch(Exception e)
			{
				_Received = String.Empty;
				throw e;
			}
		}

		public void GetFromServerAsync()
		{
			AsyncCallback Acb = new AsyncCallback(OnReceived);
			_Ns.BeginRead(_bReceived, 0, _bReceived.Length, Acb, _TcpConnect);
		}

		private void OnReceived(IAsyncResult Ar)
		{
			TcpClient Client = (TcpClient)Ar.AsyncState;
			NetworkStream Ns = Client.GetStream();

			int Size = Ns.EndRead(Ar);

			if(Size>0)
			{
				_RecSize = Size;

				if(_OnTextToWrite != null)
					_OnTextToWrite(AsyncReceived);
			
				GetFromServerAsync();
			}
			else
			{
				_StateConn = State.Disconnected;
			}
		}

		public override string ToString()
		{
			return _IP.ToString();
		}
	}
} 

Commentaires et avis

signaler à un administrateur
Commentaire de taye78 le 02/11/2002 14:17:27

bravo :)

signaler à un administrateur
Commentaire de taye78 le 02/11/2002 14:21:36

faut que j'arrête de te féliciter (tutorial) :) quoi que ca ne me gêne pas mais ce n'est pas dans mon habitude lol

--wg

signaler à un administrateur
Commentaire de maitrecesar le 26/01/2003 12:14:10

salut
je sais pas tres bien si c'est du c++ ou de java?
merci

signaler à un administrateur
Commentaire de gg00xiv le 02/04/2003 23:57:54

c du C# :)

signaler à un administrateur
Commentaire de Mattdef le 18/12/2003 22:23:57

dixit "ça peut etre utile pour comprendre les sockets"...... sans commentaire ?

ça ne mérite pas 10

signaler à un administrateur
Commentaire de JuS le 04/05/2004 11:10:00

Même commentaire que Mattdef ...
Dommage ...

signaler à un administrateur
Commentaire de phoennix le 09/06/2004 15:40:03

Idem que les 2 derniers commentaires :
Pour mieux comprendre, faudrait des commentaires pour expliquer ce qui est fait.

signaler à un administrateur
Commentaire de abdoulax le 14/12/2004 19:23:12

Lol bande de jalou !!

Haha na je plaisante ms jusqu'à maintenant je cherché exactement une source de ce type qui utilise juste les sockets sans rien en plus. Juste pour avoir un exemple. Je pense poa que la meilleur des solutions est de lire des commentaires pour apprendre. Perso je pense kil fo essayé de comprendre le code et de le modifier et la tu apprendra qlqchose.

Sinon si tu ve un truc commenté, tu va sur un site de tuto ou dans la section tutorial.

C vrai kon ma tjs di comment ton code ... Ms en fait c vous, vous souhaitez kon vous mache le travaille !!!

Have fun et bon boulo mec

signaler à un administrateur
Commentaire de fayen le 29/12/2004 11:41:06

Pour ceux qui débute dans la communication TCP/IP en C# j'ai trouvé un bon ptit tutoriel :

http://www.supinfo-projects.com/fr/2004/socket%5Fdotnet/1/

signaler à un administrateur
Commentaire de kikodos23 le 07/08/2007 18:57:11

il est insufisant de comprendre sans commentaire ;pense a ma remarque :-)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Adresse IP Internet [ par syl2 ] Bonjour,Existe-t'il une méthode pour retrouner l'adresse IP actuelle de ma connexion Internet ?Les seules méthodes que j'ai pu trouver sont liées au c Connection sécurisé [ par tobleronne ] Bonjour à tous,J'essaye tout betement de faire un accés à la base mais on me dit : "Échec de la connexion de l'utilisateur 'sa'. Raison : Non associé Etablir une connexion Tcp/Client [ par Fildomen ] SalutPouvez-vous me donner un example d'une connexion tcp/client avec le c# 2005???c très compliqué que le c# 2003.merci TCP\IP [ par RM50Man ] J'envoie un message d'une application Windows a une application consolevia TCP mais je ne comprend pas que le message ne s affiche su la console& TCP/IP [ par RM50Man ] je fais une application client\serveur pour echanger des messages et des fichierscomme msn par ex!!!j'aimerai s'il faut nécessairement une connec fermer une connexion odbc [ par engelho ] Salut tout le monde...J'utilise un odbcConnection ainsi que :   - un odbcCommand pour une première requete   - un o echec de connexion a la base de donnee [ par gazalii ]     bonsoir a vous tous svp j ai un porbleme avec ma connexion vers ma base de donnee sqlserver en fait j ai creee une base de donnee p connection à myql esyphp en C# [ par patou1007 ] Bonjour,J'ai installé easy php et j'ai créer une base de donées mysql avc phpadmin.Je travaille avec visual studio 2005 et je souhaiter Connection a une base de données [ par DigigtalDJ ] Salut tous le monde ! Voilou je débute en C# et SQL server (j'utilise express edition) et je doit creer une application web avec laquelle je doit requ Problème de connexion Acces97 [ par cybernul ] Bonjour, Après avoir regarder sur une centaine de forum, je m'en remet à vous. J'ai développé une application web qui va recherché des informations


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.