Проблема с Socket на win7 при обмене с win XP
От: NDorian Россия  
Дата: 21.08.12 09:47
Оценка:
Всем доброго времени суток!

Решил поставить свою программку для обмена на win7 и сразу возникли проблемы.
Программа работает давно но только на win XP, проблем никогда не возникало.

Сразу скажу проблема не в IPv6 и не в выборе IP адреса из доступного списка. Перекопал Инет там только об этом и идёт песня.

2ноута оба в одной сети на одном win7 на другом ХР, оба подключены через wifi. Использую С# .NET v4. Обмен через Сокеты протокол TCP/IP.
с ХР на 7 пакеты доходят, с 7 на ХР нету обмена. Аналогичная программа с ХР на ХР работает нормально.

Пример кода:
//////////////////////////
/////Передатчик
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse(ServerIp), ServerPort);
clientSocket = new Socket(ServerIp.AddressFamily, SocketType.Stream, ProtocolType.Tcp) {Ttl = 0};

try
{
clientSocket.Connect(ipend); //Рушится здесь
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString() + " " + ipend.ToString() + " " + ex.ToString());
clientSocket = null;
bFlagWait = false;
return -1;
}
//////////////////////////

//////////////////////////
////Приемная сторона
ipForMulty = IPAddress.Parse(ServerIP);
var ipend = new IPEndPoint(ipForMulty, ServerPort);
_sock = new Socket(ipend.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
_sock.Bind(ipend);

_sock.Listen(10);
var ss = _sock.Accept();

//////////////////////////

Передаваемая сторона подвисает на clientSocket.Connect(ipend); — потому что не получает разрешения на соединение
Ну а на приемной не приходит обращение

Пробовал:
1) Отключать Firewall и на ХР и на Win7
2) Давать разрешения в настройках сети при включенном Firewall.
3) Отключил антивирусы.
4) включил обнаружение компьютера на 7 в сети(можно и записывать и читать расшаренную инфу), и убрал доступ пользователя по паролям
5) пробовал порты 5000 и 6000
6) отключать и устанавливать ДНС в настройках подключения к wifi сети.....

МЛЯТЬ!!! пока писал сам разобрался!
Короче проблема в настройке сокета на стороне win7 {Ttl = 0}; — даёт проблемы с обменом.
.net socket win7 winxp
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.