Привет, поэтому я пытаюсь создать простую сетевую игру с использованием сокетов (не tcpclient или tcplistener, и да, я знаю, что это одно и то же). Мне удалось заставить чат работать, и теперь я пытаюсь заставить игру работать. Я где-то читал, что лучший способ управления игровыми данными - через другой порт на сервере (если кто-то может предложить лучший способ, не стесняйтесь).
Я собираюсь быть максимально простым, поэтому я опубликую некоторые фрагменты кода, чтобы вы могли получить общее представление. (Кстати, я не гуру C #, это мой первый проект сокетов, поэтому, пожалуйста, поймите, мой новичок)
сервер инициализируется так:
sv = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
ip = new IPEndPoint(IPAddress.Parse(b.ToString()), 1000);
sv.Bind(ip);
(b - мой локальный ip)
сообщения отправляются с использованием sv.SendTo ();
сейчас на клиенте у меня:
svIp = new IPEndPoint(IPAddress.Parse(txtIp.Text.Trim()), 1000);
и поток, который прослушивает входящие данные (смт вот так):
rcv = sv.ReceiveFrom(data, ref svIp);
Насколько я понимаю, клиент прислушивается ко всему, что сервер отправляет ему через порт 1000. Я надеюсь, что пока я прав, потому что именно так работает клиент чата.
Хорошо, после этого я создал на сервере еще один сокет-сервер, связанный с портом 1001:
gameIp = new IPEndPoint(IPAddress.Parse(b.ToString()), 1001);
теперь я хочу отправить сообщение с нового сокет-сервера, назовем его gameSv, поэтому я отправляю сообщение клиенту, используя gameSv.SendTo (); из того, что я понимаю, должно получиться сообщение от порта 1001, которое клиент не должен принимать, потому что он только прослушивает данные, поступающие из порта 1000.
Хорошо, пока хорошо (надеюсь), после этого я создаю другой поток, который прослушивает данные, поступающие с сервера на порт 1001. Так что теперь, когда я отправляю сообщение с порта 1001, поток, прослушивающий порт 1000, получает это, чем если я отправлю другое сообщение, другой поток, прослушивающий порт 1001, получит его, а другой нет, и так далее, он перейдет от одного к другому.
Есть идеи, почему это происходит и как это исправить? Спасибо заранее.