#c# #silverlight #sockets #pinvoke #winsock2
#c# #silverlight #сокеты #pinvoke #winsock2
Вопрос:
Теперь, когда Silverlight 5 (RC) поддерживает P / Invoke, я подумываю о реализации класса сокетов с функциональностью сервера, то есть класса, который реализует методы Bind, Listen, Accept и т. Д. С помощью P / Invoke я мог бы получить доступ к методам сокетов в ws2_32.dll из моей библиотеки классов Silverlight.
Если возможно, я хотел бы начать с самого начала. Это долгий путь, но: кто-нибудь внедрил оболочку C # для библиотеки DLL Winsock 2, и в этом случае эта попытка общедоступна?
Проект Mono, конечно, предоставляет собственную реализацию сокета на C #, но этот код, мягко говоря, сопряжен с небольшими накладными расходами. Я ищу более легкое решение, если оно есть.
Комментарии:
1. Возможно, я что-то упускаю, но есть ли какая-либо причина не использовать встроенный класс System.Net.Sockets? msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
2. В Silverlight встроенный класс сокетов не поддерживает серверные методы, такие как Bind, Listen и Accept. С помощью P / Invoke в Silverlight я смог бы реализовать настраиваемый класс сокетов, поддерживающий эти методы.
3. Silverlight отсутствует в списке поддерживаемых платформ (конец страницы в вашей ссылке)
4. Я что-то упустил. Спасибо!
5. Итак, вы хотите открыть прослушивающий сокет в моем браузере. Благодаря антивирусным сканерам / безопасности браузера, что они этого не допускают.
Ответ №1:
не уверен, что это то, что вы ищете, но на http://www.pinvoke.net/default.aspx/ws2_32.bind # вы можете найти подписи, которые вы ищете, просто посмотрите в левой части сайта на ws2_32
РЕДАКТИРОВАТЬ — после комментариев:
Это http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4043amp;lngWId=10 похоже, это реализованная на VB оболочка для Winsock2, которая может быть использована C #.
Комментарии:
1. Спасибо, Яхия. Да, я знаю о pinvoke.net . Для ws2_32 это довольно неполно. Я надеюсь, что кто-то уже приложил усилия для обертывания большего количества методов ws2_32.
2. Еще раз спасибо, Яхия. Я тоже видел это, прежде чем писать в SO. Я просмотрел код, но на первый взгляд мне не очевидно, смогу ли я его как-либо использовать. Я еще раз посмотрю, не пропустил ли я что-то в первый раз. В любом случае, я действительно ценю ваши усилия в этом.
3. Теперь я более внимательно изучил оболочку VB-socket, и, похоже, она полагается на компонент ActiveX mswinsck.osx. На самом деле это не кажется желательным решением, поэтому я перейду к ручному объявлению P / Invoke соответствующих методов в ws2_32.dll .