Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 19287|Отговор: 1

[Източник] [Реален бой] UDP System.Net.Sockets.SocketException

[Копирай линк]
Публикувано в 9.03.2017 г. 10:16:26 ч. | | |
System.Net.Sockets.SocketException (0x80004005): Отдалеченият хост принуди съществуваща връзка да затвори.   В System.Net.Sockets.Socket.ReceiveFrom(Byte[] b



По време на комуникацията с UDP, използвайки try... Catch statement винаги получава грешка при приемане на данни:
System.Net.Sockets.SocketException (0x80004005): Отдалеченият хост принуди съществуваща връзка да затвори.
Най-глупавото решение от самото начало беше да не се прави нищо в catch statement и да се остави функцията за listen port да продължи да работи. Но това не е дългосрочно решение и дълго време търсих онлайн и намерих обяснението на Microsoft.


Обяснението на Microsoft: http://support.microsoft.com/kb/263823

Решение:








Предишен:Успешно извърших UDP дупка [Препечат]
Следващ:Javascrip{filter}t window.print() задава стила на печат и съдържанието
 Хазяин| Публикувано в 9.03.2017 г. 10:17:54 ч. |
След инициализация на обекта, задайте свойствата по следния начин:
                    uint IOC_IN = 0x80000000;
                    uint IOC_VENDOR = 0x18000000;
                    uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
//uc为接收数据所使用的UdpClient,不同程序自己手改
            UC. Client.IOControl((int)SIO_UDP_CONNRESET, нов байт[] {Convert.ToByte(false)}, null);

Методът на Socket.IOControl (IOControlCode, байт[], байт[])
Използвайте IOControlCode, за да зададете контролен код и да зададете ниско ниво режим на работа за сокета.
параметър
ioControlCode
IOControlCode стойност, която определя контролния код за действието, което трябва да се извърши.
optionInValue
Масив от тип Байт, съдържащ входните данни, необходими за операцията.
optionOutValue
Масив от тип Byte, който съдържа изходните данни, върнати от операцията.
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com