Bonjour, je m'entraîne avec les threads et le réseau en C# j'essaye de créer un chat client / serveur ou le serveur renvoie à tout les clients le message d'un des clients. Seulement j'essaye avec le broadcast sauf que pour le tester il faut que j'ouvre plusieurs clients sur le même pc . Et la boummm ça plante ... Si vous pouviez m'aider pour ceci ce serait très gentil
Exception non gérée : System.Net.Sockets.SocketException: Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée
à System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
à System.Net.Sockets.Socket.Bind(EndPoint localEP)
à System.Net.Sockets.UdpClient..ctor(Int32 port, AddressFamily family)
à System.Net.Sockets.UdpClient..ctor(Int32 port)
à Client.Program.Main(String[] args) dans C:\Users\Asstryfi\source\repos\ConsoleApp1\ConsoleApp1\Program.cs:ligne 14
Le code de mon client :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace Client
{
class Program
{
static void Main(string[] args)
{
UdpClient client = new UdpClient(5053);
while(true)
{
Console.Write("> ");
string msg = Console.ReadLine();
byte[] data = Encoding.Default.GetBytes(msg);
client.Send(data, data.Length, "127.0.0.1", 1523);
}
}
}
}
Un client basique quoi
Et le serveur envoie un message aux clients via la variable / propriété _broadcast :
Sauf acrobaties de multiplexing, vous ne pouvez avoir qu'une personne qui écoute sur un port en même temps.
Le plus simple, c'est de passer l'le port d'écoute en paramètre de votre programme et de faire un script qui démarre les clients avec chacun un numéro de port différent.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Je tiens tout d'abord a preciser que je ne m'y connais pas vraiment dans ce domaine soyez indulgent s'il vous plait
le code est censé afficher les jumeaux 3D de mes mains sur unity lorsque je présente mes main devant la webcam. mais lorsque je run unity je reçois les erreurs je ne comprend pas le problème. voila le code ci-joint; et les erreurs sur unity en image
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HandTracking1 : MonoBehaviour
{
// Start is called before the first frame update
public UDPReceive udpReceive;
public GameObject[] handPoints;
void Start()
{
}
// Update is called once per frame
void Update()
{
string data = udpReceive.data;
//data = data.Remove(0, 1);
//data = data.Remove(data.Length-1, 1);
//print(data);
string[] points = data.Split(',');
//print(points[0]);
for (int i = 21; i<42; i++)
{
float x = 8-float.Parse(points[i*3])/100;
float y = float.Parse(points[i*3 +1])/100;
float z = float.Parse(points[i*3 +2])/100;
//print(i);
handPoints[i].transform.localPosition = new Vector3(x, y, z);
}
LeslieFouda a écrit:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HandTracking1 : MonoBehaviour
{
// Start is called before the first frame update
public UDPReceive udpReceive;
public GameObject[] handPoints;
void Start()
{
}
// Update is called once per frame
void Update()
{
string data = udpReceive.data;
//data = data.Remove(0, 1);
//data = data.Remove(data.Length-1, 1);
//print(data);
string[] points = data.Split(',');
//print(points[0]);
for (int i = 21; i<42; i++)
{
float x = 8-float.Parse(points[i*3])/100;
float y = float.Parse(points[i*3 +1])/100;
float z = float.Parse(points[i*3 +2])/100;
//print(i);
handPoints[i].transform.localPosition = new Vector3(x, y, z);
}
}
}
}
}
- Edité par LeslieFouda 19 octobre 2022 à 15:51:21
l'erreur indique une erreur d'indice en dehors de la plage en ligne 30 de HandTracking1; donc points[i*3] n'est pas accessible pour une certaine valeur de i
Et tu sembles ouvrir plusieurs sockets identiques
Et tu aurais du créer ton propre sujet plutôt que d'utiliser celui d'un autre
Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Pas d'aide concernant le code par MP, le forum est là pour ça :)