Использование разных протоколов в одном приложении с использованием одного сокета - PullRequest
0 голосов
/ 20 декабря 2011

Могу ли я отправлять и получать дейтаграммы UDP по одному и тому же сокету, который я использую для связи TCP. В моем приложении существует мультимедийная связь, для которой мне нужно использовать UDP для связи. Если я создаю новый сокет, он вызывает исключение для свойств. из LingerState и NoDelay . Когда я назначаю старый экземпляр Socket другой переменной Socket, он не позволяет мне изменять свойства, так как большинство свойств доступно только для чтения. Отправка данных в зону TCP-соединения.

* Код *

Socket SendingSocket = новый сокет (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint Endp = новый IPEndPoint (IPAddress.Parse ("192.168.3.233"), порт);

SendingSocket.Bind (ENDP);

while (SendingSocket.Connected)
{ string Message = "Тестирование отправки сообщения по UDP"; ASCIIEncoding Encode = new ASCIIEncoding (); byte [] MessageBytes = Encode.GetBytes (Message); SendingSocket.SendTo (MessageBytes, 0, MessageBytes.Length, SocketFlags.None, Endp); } '

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Трудно сказать по этому фрагменту кода, но, возможно, вам не нужен SendingSocket.Bind(Endp), поскольку ваш SendingSocket.SendTo также включает конечную точку IP. Также попробуйте просто

SendingSocket.SendTo(MessageBytes, Endp);
0 голосов
/ 20 декабря 2011

Нет.Вы не можете использовать один и тот же сокет для TCP и UDP.Сокет связан только с одним протоколом.

...