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