2010-11-05 8 views
1

Ceci est mon code serveurC# serveur UdpClient et numéro client

byte[] data = new byte[1024]; 
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050); 
UdpClient newsock = new UdpClient(ipep); 

Console.WriteLine("Waiting for a client..."); 

IPEndPoint send = new IPEndPoint(IPAddress.Any, 0); 

byte[] data1 = newsock.Receive(ref send); 
int test1 = BitConverter.ToInt32(data1, 0); 
Console.WriteLine("test1 = {0}", test1); 

Ceci est mon code client

byte[] data = new byte[1024]; 
string stringData; 
UdpClient server = new UdpClient("127.0.0.1", 9050); 

IPEndPoint send = new IPEndPoint(IPAddress.Any, 0); 

int test1 = 45; 

byte[] data1 = BitConverter.GetBytes(test1); 
server.Send(data1, data1.Length); 

Selon mon client et le serveur, Le client est celui envoyer des données au serveur.

Mais mon exigence est inverse! et im incapable de le faire .. Quand je essayer d'ajouter ce code au serveur

byte[] buffer = ASCIIEncoding.ASCII.GetBytes("Hello Client"); 
newsock.Send(buffer, buffer.Length); 

je reçois une exception The operation is not allowed on non-connected sockets.

Quelqu'un peut me aider?

Répondre

-2

Découvrez JoinMulticastGroup (c'est comme Connect pour TcpClient). Vous devez le faire avant de diffuser (c'est-à-dire si vous diffusez).

La documentation de UdpClient vous sera également utile.

+0

Multicast est un concept indépendant. Une application UDP client-serveur typique n'utiliserait pas la multidiffusion. –

+0

@Ben: Bien, je suppose que la documentation pour UdpClient est tout ce dont on a vraiment besoin. –

3

UDP est sans connexion. Lorsque vous appelez connect sur un socket UDP, vous définissez simplement l'adresse IP et le port de destination par défaut. Le destinataire à l'autre extrémité doit utiliser Socket.ReceiveFrom (appelé recvfrom sous UNIX) pour savoir d'où provient le paquet, puis SendTo pour répondre à la demande d'origine. Le serveur pourrait utiliser connect mais cela serait gênant si vous vouliez supporter plusieurs clients.