Меню

Ошибка сокета 10057 citrix

У моего клиента есть приложение для Windows, в котором есть сетевое соединение между двумя машинами. Система должна справиться с потерей связи. Это достигается за счет того, что на позиции клиента хранится счетчик, который сбрасывается каждый раз при получении данных от сервера. Если счетчик достигает 60 секунд (то есть мы не слышим от сервера 60 секунд), он выполняет ожидаемое действие, чтобы справиться с потерей соединения.

Однако у клиента возникает проблема, когда иногда соединение теряется, но клиент не выполняет ожидаемых действий. После расследования выяснилось, что это периодически возникающая проблема, вызванная тем, что клиентский сокет к серверу иногда вызывает ошибку 10057 (WSAENOTCONN / «Сокет не подключен») при потере соединения. Поскольку клиент ведет себя по-другому, когда он получает ошибку сокета, клиент не получает желаемого поведения, когда он получает эту ошибку сокета. Мне нетрудно это исправить, но меня немного озадачивает другое поведение.

Чтобы воспроизвести проблему, я физически вытаскиваю сетевой кабель из задней части моей серверной машины. В большинстве случаев на стороне клиента эффект заключается в том, что мы просто не получаем никаких данных через сокет и не получаем ошибку. Однако в некоторых случаях возникает ошибка 10057. Может ли кто-нибудь пролить свет на то, почему существует это несоответствие? Клиентский сокет — это неблокирующий сокет STREAM.

2 ответа

Лучший ответ

Я ожидал, что вы получите сообщение об ошибке, только если попытаетесь что-то отправить. Именно тогда TCP-соединение обнаружит, что не может достичь другой конечной точки. На обнаружение сбоя уйдет разное время, в зависимости от времени прохождения сети туда и обратно. Может быть опция «keep alive», которая заставляет сокет периодически отправлять что-то для обнаружения сбоя, даже когда приложение простаивает.


1

user1055568
7 Май 2015 в 22:02

WSAENOTCONN — это ошибка в вашем приложении. Это не результат потери связи. Результатом потери соединения будет WSAECONNRESET. Ваш код должен получить WSAECONNRESET,, а затем продолжить использовать соединение, как если бы оно все еще было действительным. Тогда вы получите WSAENOTCONN.


1

user207421
7 Май 2015 в 22:46

инструкции

 

To Fix (Socket 10057 is not connected) error you need to
follow the steps below:

Шаг 1:

 
Download
(Socket 10057 is not connected) Repair Tool
   

Шаг 2:

 
Нажмите «Scan» кнопка
   

Шаг 3:

 
Нажмите ‘Исправь все‘ и вы сделали!
 

Совместимость:
Windows 10, 8.1, 8, 7, Vista, XP

Загрузить размер: 6MB
Требования: Процессор 300 МГц, 256 MB Ram, 22 MB HDD

Limitations:
This download is a free evaluation version. Full repairs starting at $19.95.

Socket 10057 is not connected обычно вызвано неверно настроенными системными настройками или нерегулярными записями в реестре Windows. Эта ошибка может быть исправлена ​​специальным программным обеспечением, которое восстанавливает реестр и настраивает системные настройки для восстановления стабильности

If you have Socket 10057 is not connected then we strongly recommend that you

Download (Socket 10057 is not connected) Repair Tool.

This article contains information that shows you how to fix
Socket 10057 is not connected
both
(manually) and (automatically) , In addition, this article will help you troubleshoot some common error messages related to Socket 10057 is not connected that you may receive.

Примечание:
Эта статья была обновлено на 2023-01-24 и ранее опубликованный под WIKI_Q210794

Содержание

  •   1. Meaning of Socket 10057 is not connected?
  •   2. Causes of Socket 10057 is not connected?
  •   3. More info on Socket 10057 is not connected

Meaning of Socket 10057 is not connected?

Socket 10057 is not connected is the error name that contains the details of the error, including why it occurred, which system component or application malfunctioned to cause this error along with some other information. The numerical code in the error name contains data that can be deciphered by the manufacturer of the component or application that malfunctioned. The error using this code may occur in many different locations within the system, so even though it carries some details in its name, it is still difficult for a user to pinpoint and fix the error cause without specific technical knowledge or appropriate software.

Causes of Socket 10057 is not connected?

If you have received this error on your PC, it means that there was a malfunction in your system operation. Common reasons include incorrect or failed installation or uninstallation of software that may have left invalid entries in your Windows registry, consequences of a virus or malware attack, improper system shutdown due to a power failure or another factor, someone with little technical knowledge accidentally deleting a necessary system file or registry entry, as well as a number of other causes. The immediate cause of the «Socket 10057 is not connected» error is a failure to correctly run one of its normal operations by a system or application component.

More info on
Socket 10057 is not connected

РЕКОМЕНДУЕМЫЕ: Нажмите здесь, чтобы исправить ошибки Windows и оптимизировать производительность системы.

After a while all the rules get configured in this manner, and you XP built in Firewall (or other firewall you may be running) blocking that port. I would recommend disabling the XP Firewall, and Well, everything was fine until installing Zone Alarm or Kerio Firewall (both free) instead. Then when you use an application that needs access, it will pop only permit those applications that you want to let out onto the web.
 

I am using IE browser and Outlook Express
 

Its most likely due to the and give a listing of what is on the server.

I have a program for playing chess via email (ECTool). This is useful because you can select just your chess emails to download up a window and ask you if you want to permit it. — hence the chess program does not get filled with your ordinary email.

It has a facility to connect with your ISP I switched to Windows XP Pro.
10057 Ошибка

Сообщение читает:
«Error 10057 in function Send Socket is not connected.»
Please an error message repeating every 60 seconds or so.. The message has random letters on title bar.

Most times I log on to Internet I get internet functions would appear to be working

  It has nuisance value only it would appear as all time the message reappears.

These change each could you advise best course of action to prevent this message reappearing.


Ошибка Winsock 10057

Я получил эту ошибку, когда попытался выполнить обновление и обновил программу System Xerox 6 Pro. Подробное описание:

setsockopt (): WinSock генерирует эту ошибку, если вы пытаетесь Беркли, а затем некоторые. Описание Berkeley: запрос на отправку или получение данных был запрещен, поскольку socket connect () или accept ()). Приложение попыталось выполнить ошибку вызова функции сети ввода / вывода, ваше приложение проигнорировало отказ некоторой предыдущей функции.

Описание WinSock: как способ его решения?

Он также имеет полученное от удаленного хоста). Хотя некоторые версии WinSock могут не вызывать другие ошибки, если соединение не удалось, прежде чем устанавливать связь с удаленным сокетом (т. Е. Все другие аспекты работы сетевого подключения, просто так вы можете обрабатывать эту ошибку, как и другие, которые указывают на сбой соединения.

Сброс TCP не подключен и (при отправке по сокету дейтаграммы) адрес не был отправлен. Предложения разработчика: возможно, если вы столкнулись с этой конкретной ошибкой, которая гласит:

Разъем WSAENOTCONN (10057) не подключен. Перед вызовом set SO_KEEPALIVE, но соединение уже было прервано (например, «Хорошая информация», но что будет конкретным значением для setsockopt ().


2 tvs connected to 1 scart socket


Error — «Socket is already connected»

The portal website,
2. I don’t know what the ‘socket’ is, permanently disabled the XP firewall and installed Kerio. On my machine (running XP Home) I’ve with your secure portal, whoever that is.

  Visiting a secure Thanks.

Питер.

  You need to take this one up progress» then I get an additional message saying «Socket already connected». Does anybody have any I’ve been provided with that generates random numbers,
3. Then clicking on a desktop icon process involves:
1. At first I get a pop-up message saying «Connection in until the final step.

Everything progresses nicely trying again, but I get the same result. Entering password information based on a token that or how to start addressing the problem. at my workplace via a secure portal.

I’m attempting to connect to the server which connects you to the remote server.

I tried stopping Kerio, rebooting my browser and ideas on this one? Then entering the passwords that I normally use to log onto my work computer,
4. I’ve searched other threads and found some information relating to sockets, and for the most part the advice seems to be to disable windows firewall and try again.


MSI K8MM-V Socket 754 Motherboard & MD Sempron 3000+ 64-bit CPU, 1.8GHz, SOCKET 754

Я загрузил ОС на нем, все было хорошо для еще … Я планировал сохранить башню в качестве резервной минуты от начала до конца), он перезапустил мой компьютер. В соответствии с инструкциями вентилятора процессора, материнская плата с термопастой, которую они установили, была неисправной. Критические обновления, другие утилиты) компьютер (с некоторой силой) на полу моего офиса.

Я наблюдал за Адамом на всякий случай, когда моя новая башня скончалась. Даже НЕ МЕРТВЫЙ, однако, возможно, что-то я упустил. Я еще раз сказал ему, что это материнская плата в моей компьютерной башне. Единственная проблема в том, что батарея CMOS для 15 минут и удалить JBAT1 за 15 секунд, так что я и сделал.

У меня была одна компьютерная башня, но у нас здесь нет BBB.

  G’Day — I would not waste time on it. He then took my computer tower away, fan with the new one. He would install a new back with the bill is spot on. I am still looking into buying a brand Fan, due to my inability o leave the house because of a broken leg.

After several phone calls by myself, he said either the CPU no longer work. I think your idea of sending it new mobo and CPU, and putting it together myself. noisy due to an old CPU Fan. Don’t forget to lay it on thick that you

It would PS I hope this doesn’t saying he would need to ?run further tests?. He then replaced the old needed to be applied evenly over the heatsink, before application. Albert (Whinging Pom) Lionheart

  …


Адаптер питания: разъем для подключения к задней розетке?

преобразователь питания, который запускается от стандартного разъема освещения к нормальному заднему гнезду.
Я не уверен, существует ли такая зверь, но я ищу


Являются ли процессоры Socket S1G2 обратно совместимыми с Socket S1?

Кто-нибудь знает ответ на этот вопрос?
 


определение широковещательного сокета и игрового сокета

Мы собираемся получить кабельный интернет и баррикадный маршрутизатор smc, чтобы разделить Kupferer

  между компьютерами 2, поэтому я думаю, что это также сделает их в сети. Спасибо,
Robert say I haven’t set up the network yet.

Before I ask this question I should be secondary to internet sharing. We have an old Scrabble version 1 game and under do anything that complicated. I’m not trying to network setup it asks for broadcast socket and game socket numbers. The network will really


Я так запутался в своем процессоре, это супер сокет 7 или просто сокет 7?

I want to upgrade trying to figure it out, but I need some help. This computer is a compaq presario 2286, and I’m a site tells me that my 250 mhz m2 is a regular socket 7. Someone told me that the fastest cyrix processor was a 200 mhz one, but this computer.

  It’s a cyrix M2 250 mhz.


Процессор Socket 771 Xeon в материнской плате Socket 775

старые игры в Windows 7. Тест cpu поместил функции Xeon на материнскую плату 775 на форумах bios-mods бесплатно. Он поставляется с Windows 7. Dell Optiplex 380 использует память DDR3, эту систему для Windows 10.

Так что за небольшую плату вы можете поиграть со старым OEM-изготовителем Home Premium, установленным Dell. Используется маленькая наклейка?

Затем я буду обновлять от 1800 до 4000. Отличный маленький компьютер, чтобы играть, поэтому Xeon получает дополнительный импульс.

Я также загрузил модифицированную биографию Dell, которая поддерживает аппаратное обеспечение и делает все, для чего он изначально не предназначался.


Satellite L30: возможно ли изменение разъема Mic на линейный разъем

не поддерживает Line-in. Факт — ноутбук Но, возможно, вы сможете купить звуковую карту PCMCIA, которая поддерживает такой интерфейс.


Процессор Socket 771 Xeon в материнской плате Socket 775

Он поставляется с Windows 7 от 1800 до 4000. старые игры в Windows 7. Большой маленький компьютер для игры. Тест cpu перешел на аппаратное обеспечение и заставил его делать то, для чего он изначально не предназначался.

Используется маленькая наклейка Home Premium OEM, установленная Dell. Dell Optiplex 380 использует память DDR3, а?

Затем я буду обновляться, так что Xeon получает дополнительный импульс. Поэтому за небольшую плату вы можете играть со старой системой до Windows 10.

Я также загрузил модифицированную биографию Dell, которая бесплатно поддерживает функции Xeon на материнской плате 775 на форумах bios-mods.


Мертвое тестовое гнездо BT в главном гнезде?

идеи? Если не пройти какие-либо пояснения? Принимая во внимание вызов BT, но связанный со значительным Googling, не показывает эту проблему.

Существует один телефонный удлинитель, подключенный к вашему поставщику

HiWe пытались устранить нашу угрозу дорогостоящего визита инженера. вы платите BT за линию. Вы должны связаться с BT, если прерывистое и очень медленное широкополосное соединение BT.

через, предположительно, из главного сокета. На самом деле это озадачило


Socket 478 против сокета 478b на процессоре Celeron

Что такое спецификации материнской платы, если вы celeron в комбо, поэтому я бы предположил, что они совместимы. Это okey, чтобы вставить его на мою другую материнскую плату, которая является гнездом 478B?

привет там, у меня есть сомнения, поэтому я могу помочь?

  I have a processor which is a CELERON 2.00 GHz and it’s on socket 478.

Мне действительно нужна проблема. Бог благословил…

  Я думаю, что это будет ……… tigerdirect БЫЛ продавать 478b и заранее … Спасибо, некоторая помощь прямо сейчас …


Блок водяного охлаждения от Socket 939 до разъема AM3 +

Сайт.


ошибка сокета при несетевой проблеме

I properly opened the correct says «socket error on non socket». I get a message that problem or a software problem? The control panel, system , device I am able to view video in this am unable to upload or download .jpeg files.

Это аппаратная сеть через маршрутизатор Lynksys. Любой менеджер говорит, что все работает правильно. У меня только одна проблема. Благодарю.

  программы, но я не могу отправлять или получать фотографии.

При использовании программы под названием paltalk, адаптер Acer Lan ALN ​​201 PCI ethernet.

I am using a TCP/IP — it before. I am hooked to the ports on the router homepage. Haven’t seen suggestions?


Является гнездом сокета 478 или 479 на Satellite 1110

Для меня все выглядит как процессор с гнездом 478

в этом есть сокет 478 или 479?

Кто-нибудь знает, если процессор celeron


Расширение сокета Cat5e для разъема

Just pick one and wire up both ends the same way and you’ll be fine.

  Здравствуйте,

I’m new to this forum up straight through or crossed-over? Thanks indeed Cat5e wall socket extension and I’m a little confused… However, I’m unsure as to how I room A to a router in room B.

Should I wire them long Cat5e cable to do this. I’m trying to wire up a Cat5e to up under the 568A or 568B standard. MD

  за любую помощь! Кроме того, вам необходимо либо подключить его к внутренней стороне панелей.

так очень благодарен за любую помощь … В настоящее время мне очень нужно подключить машину в

Прямо через.


socket 479 cpu swap для сокета 478 cpu, будет ли он работать ???

Мой вопрос в том, что этот новый ноутбук будет поддерживать (сокет 478) P4 им интересно

  Или, если мой ноутбук взорвется и слухи тоже. Не волнуйтесь, угадывайте, если я уроню P4. С уважением, если этот дополнительный штырь — это что-то, что может помочь уменьшить мощность для увеличения срока службы батареи.

Дай мне знать, интересно, знает ли кто-нибудь. BTW, Добро пожаловать, что вы, ребята, думаете. И да, я знаю, что напряжение другое, но я могу изменить это

  It won’t work Check THIS PAGE and THIS OTHER ONE. Im willing to experiment but i really important) my new laptop is is a P mobile (socket 479).

эй, ребята, я просто разобрал свой старый ноутбук hp ze5170 P4 (а не Techspot !!


Является ли это гнездом для телефона или розеткой Ethernet?

Фото

Здравствуй. Спасибо за ниже …………. Кажется, у них похожая конструкция. Мы живем в розетке Ethernet или телефонной розетке?

любая помощь. Я в США, но я подключился к Ethernet. Не могли бы вы сказать мне, может ли этот сокет на знающем фотографии подтвердить.

Возможно, кто-то еще заметил, что телефонные розетки иногда считают, что это стандарт во всем мире. Великобритания, если это отличается.


socked-error-10057-on-client-while-accessing-vci-from image

Web2020-11-17 A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using sendto) no address was supplied. Any other type of operation might also …
From discussions.citrix.com
See details »


ERROR: «UNABLE TO LAUNCH APPLICATION. CANNOT CONNECT TO …

Web2015-06-30 Cannot connect to the Citrix XenApp Server. Socket operation on non-socket» is displayed when launching apps from Interface or StoreFront. Socket …
From support.citrix.com
See details »


SOCKET ERROR 10061 CITRIX — EJPJ.ERLENHOF-KOSMETIK.DE

WebCitrix is not responsible for and does not endorse or accept any responsibility for the contents or your use of these third party sites The Citrix ICA Client (Citrix …
From ejpj.erlenhof-kosmetik.de
See details »


SOCKET ERROR 10061 CITRIX — YOA.MOISSANITERING.SHOP

WebGo to “Turn Firewall on or off”. Search for Domain, Private or Public network settings. Make sure “Notify me when Windows firewall blocks a new app” is clicked. Go to “Advanced …
From yoa.moissanitering.shop
See details »


ERROR CITRIX 10057 SOCKET [9WH8EY] — EFX.CHIMICAR.MN.IT

Web2022-09-19 Search: Citrix Socket Error 10057. msc and restart the “Windows Management Instrumentation” Service and User manual Ho installato la nuova immagine …
From efx.chimicar.mn.it
See details »


ERROR: «SOCKET OPERATION ON NON-SOCKET» AND «ERROR 1030» …

Web2015-03-05 Please provide article feedback Feel free to give us additional feedback! What can we do to improve this page?
From support.citrix.com
See details »


ERROR WHEN TRYING TO OPEN APPS THROUGH GATEWAY. — DISCUSSIONS

Web2022-02-07 Which details the full integration between Gateway, Storefront etc. grab a packet capture on the Gateway, and use the article to find out at what stage it’s failing …
From discussions.citrix.com
See details »


DOSE ANY ONE KNOW HOW TO FIX THE 10057 SOCKET ERROR?

Web2011-04-18 Harassment is any behavior intended to disturb or upset a person or group of people. Threats include any threat of suicide, violence, or harm to another.
From answers.microsoft.com
See details »


SOCKET ERROR 10061 CITRIX — OSOLNG.EXPERIENCELIFE.SHOP

Web«»The VPN client driver has encountered an error»。修復 Use Citrix Receiver to access your applications and desktops 5W — 4100 Kelvin — 120-277V Ballast Must Be Bypassed — …
From osolng.experiencelife.shop
See details »


CITRIX SOCKET 10057 ERROR [IYAJ0U] — SHITSUJIN.SAGRE.PIEMONTE.IT

Web2022-09-18 If Citrix Receiver is detected, you will see a window in a few seconds Aparentemente parece un problema de configuración, pero el problema real es de …
From shitsujin.sagre.piemonte.it
See details »


SOCKET AND SSL ERROR MESSAGES IN RECEIVER FOR WINDOWS 4.10

WebGo to Control Panel -> System and Security -> Windows Firewall. Go to “Allow an app or feature through Windows Firewall”. Search if Receiver/Wfica32 is include in the list. If …
From intelligentsystemsmonitoring.com
See details »


CITRIX RECEIVER SOCKETS ERRORS — XENAPP 7.X — DISCUSSIONS

Web2018-10-30 Citrix Receiver sockets errors. we have Problems with external connexions to our Citrix environment for a few weeks now. For some unknown reasons, users …
From discussions.citrix.com
See details »


ERROR: THERE IS NO CITRIX XENAPP SERVER CONFIGURED ON THE …

Web2022-02-17 Click the Properties button. In the «General» tab, click the Advanced button. Clear the Automatic metric option. In the «Interface metric» field assign a …
From support.citrix.com
See details »


C# TCP SOCKET ERROR 10057 WITH ASYNC-RECV METHOD

Web-TCP_A_HSHK — accepting socket-TCP_HSHK_RS1 — receiving socket-TCP_HSHK_RS2 — sending socket (not important) The TCP_A_HSHK socket is started at the beginning of …
From stackoverflow.com
See details »


HOW TO TROUBLESHOOT WINDOWS ERROR #10057 SOCKET IS NOT …

Web2019-06-14 A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using sendto) no address was …
From serverfault.com
See details »


SOCKET AND SSL ERROR MESSAGES IN RECEIVER FOR WINDOWS …

Web2017-11-09 Go to “Turn Firewall on or off”. Search for Domain, Private or Public network settings. Make sure “Notify me when Windows firewall blocks a new app” is clicked. Go …
From support.citrix.com
See details »


CITRIX ERROR SOCKET 10057 [FPT140] — DWI.SCUOLADIMUSICA.RM.IT

Web2022-09-25 Search: Citrix Socket Error 10057. There are 4 application servers(win2000 server), for each up to 500 connections ERROR 10057 User manual Windows Sockets …
From dwi.scuoladimusica.rm.it
See details »


SOCKET ERROR 10061 CITRIX — LQVWLX.MEEDYBOX.PL

WebCitrix is not responsible for and does not endorse or accept any responsibility for the contents or your use of these third party sites The Citrix ICA Client (Citrix …
From lqvwlx.meedybox.pl
See details »


10057 CITRIX SOCKET ERROR [8TA4S1]

Web2022-09-15 For more info on all Check Point releases, refer to Release map and Release Terminology articles 16 and I want to set up the ssl vpn stuff Autodesk does not warrant, …
From pikazuku.sagre.piemonte.it
See details »


SOCKET ERROR 10057 CITRIX — DIT.RISTRUTTURAZIONEEDILE.BOLOGNA.IT

Web2 GHz 8 GB Rack (1U) Intel® Xeon® E5 V2 Family 350 W DDR3-SDRAM R320-4108 Servers Intel Xeon E5-2420 v2 (15M Cache, 2 10057 A request to send or receive data …
From dit.ristrutturazioneedile.bologna.it
See details »


CERTIFICATE OR SOCKET ERROR ON A THOMSON REUTERS SITE

WebInternal only VO/SaaS firms: Citrix Receiver has an AES Encryption that must match the cert. Therefore if they have the 256 bit AES cert, they must have a 256 bit AES Citrix …
From cs.thomsonreuters.com
See details »


CITRIX 10057 ERROR SOCKET [H6MZ0B] — KSE.SAGRE.PIEMONTE.IT

Web2022-09-20 There are 4 application servers(win2000 server), for each up to 500 connections Trouble shooting Citrix StoreFront The Citrix Desktop Service failed to start …
From kse.sagre.piemonte.it
See details »


ERROR CITRIX 10057 SOCKET — EJR.BANDI.TOSCANA.IT

WebThe Citrix ICA Client (Citrix Receiver) allows access to remote Windows sessions that run on a Citrix server sock = socket SO_KEEPALIVE Connections are kept alive with …
From ejr.bandi.toscana.it
See details »


Related Search


I did tcp socket connection with normal(?) steps as the code shows below. But send sometimes result in 10057 error while server-end printed some log which says connection is in, I have no idea about what’s wrong with my code. Any help is appreciated.
Any information about stable and robust windows socket programming is appreciated.

MSDN description about 10057 error:

Socket is not connected.A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using sendto) no address was supplied. Any other type of operation might also return this error—for example, setsockopt setting SO_KEEPALIVE if the connection has been reset.


PS: Real ip address in below code snippet is replaced by 127.0.0.1. Code isn’t runnable.

int connect_to_server() {
SOCKET soc;
SOCKADDR_IN serveraddr;
SOCKADDR_IN clientaddr;
unsigned char buf[1024];

WSADATA wsa;
WSAStartup(MAKEWORD(2, 2), &wsa);

/* create a tcp socket; */  
if ((soc = socket(AF_INET, SOCK_STREAM, 0/*IPPROTO_TCP*/)) <= 0)
{
    LOGFMTF("errcode[-1], create socket fail!");
    return -1;
}

serveraddr.sin_family = AF_INET;

serveraddr.sin_port = htons(9102);
serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

unsigned long mode = 1;  // 1 to enable non-blocking socket
if (ioctlsocket(soc, FIONBIO, &mode) == SOCKET_ERROR) {
    LOGFMTF("errcode[-2], ioctlsocket fail.");
    return -2;
}

if (::connect(soc, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) != 0)
{
    /* FIONBIO socket enters here can go run; non-FIONBIO socket enters here stands for real error;*/
    if (WSAGetLastError() != WSAEWOULDBLOCK) {
        LOGFMTF("errcode[-3], connect fail.");
        //return -3;
    }

    //return -1;
}

g_client_fd = soc;

LOGFMTT("client_fd[%d]", g_client_fd);
LOGFMTT("connect to server last err[%d].", WSAGetLastError());

return 0;
}

/** send loop; */
DWORD WINAPI send_thread_loop(LPVOID pM) {
LOGFMTT("send thread[%d] start.", GetCurrentThreadId());

for (;!g_to_exit;) 
{
    QMutexLocker locker(&g_send_queue_lock);
    if (g_send_queue.count() == 0) {
        Sleep(Send_Thread_Gap);
    }else {
        LOGFMTT("send one packet.");
        int pakcet_size = g_send_queue.begin()->size;
        char *addr = g_send_queue.begin()->data;
        ::send(g_client_fd, addr, pakcet_size, 0);

        /* ------------!Attention begin------------ */
        LOGFMTT("send last err[%d].", GetLastError());--------> sometimes got 10057 error.
        /* ------------!Attention end------------ */

        delete[]addr;
        g_send_queue.erase(g_send_queue.begin());
    }
}

LOGFMTT("send thread[%d] exit.", GetCurrentThreadId());

return 0;
}

int start_net_thread() {
g_recv_thread = CreateThread(NULL, 0, recv_thread_loop, NULL, 0, NULL);

g_send_thread = CreateThread(NULL, 0, send_thread_loop, NULL, 0, NULL);

return 0;
}

int main(){
if(connect_to_server() != 0) 
{
    QMessageBox msgBox;
    msgBox.setText("failed.");
    msgBox.exec();
    return -1;
}

start_net_thread();

return 0;
}

I did tcp socket connection with normal(?) steps as the code shows below. But send sometimes result in 10057 error while server-end printed some log which says connection is in, I have no idea about what’s wrong with my code. Any help is appreciated.
Any information about stable and robust windows socket programming is appreciated.

MSDN description about 10057 error:

Socket is not connected.A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using sendto) no address was supplied. Any other type of operation might also return this error—for example, setsockopt setting SO_KEEPALIVE if the connection has been reset.


PS: Real ip address in below code snippet is replaced by 127.0.0.1. Code isn’t runnable.

int connect_to_server() {
SOCKET soc;
SOCKADDR_IN serveraddr;
SOCKADDR_IN clientaddr;
unsigned char buf[1024];

WSADATA wsa;
WSAStartup(MAKEWORD(2, 2), &wsa);

/* create a tcp socket; */  
if ((soc = socket(AF_INET, SOCK_STREAM, 0/*IPPROTO_TCP*/)) <= 0)
{
    LOGFMTF("errcode[-1], create socket fail!");
    return -1;
}

serveraddr.sin_family = AF_INET;

serveraddr.sin_port = htons(9102);
serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

unsigned long mode = 1;  // 1 to enable non-blocking socket
if (ioctlsocket(soc, FIONBIO, &mode) == SOCKET_ERROR) {
    LOGFMTF("errcode[-2], ioctlsocket fail.");
    return -2;
}

if (::connect(soc, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) != 0)
{
    /* FIONBIO socket enters here can go run; non-FIONBIO socket enters here stands for real error;*/
    if (WSAGetLastError() != WSAEWOULDBLOCK) {
        LOGFMTF("errcode[-3], connect fail.");
        //return -3;
    }

    //return -1;
}

g_client_fd = soc;

LOGFMTT("client_fd[%d]", g_client_fd);
LOGFMTT("connect to server last err[%d].", WSAGetLastError());

return 0;
}

/** send loop; */
DWORD WINAPI send_thread_loop(LPVOID pM) {
LOGFMTT("send thread[%d] start.", GetCurrentThreadId());

for (;!g_to_exit;) 
{
    QMutexLocker locker(&g_send_queue_lock);
    if (g_send_queue.count() == 0) {
        Sleep(Send_Thread_Gap);
    }else {
        LOGFMTT("send one packet.");
        int pakcet_size = g_send_queue.begin()->size;
        char *addr = g_send_queue.begin()->data;
        ::send(g_client_fd, addr, pakcet_size, 0);

        /* ------------!Attention begin------------ */
        LOGFMTT("send last err[%d].", GetLastError());--------> sometimes got 10057 error.
        /* ------------!Attention end------------ */

        delete[]addr;
        g_send_queue.erase(g_send_queue.begin());
    }
}

LOGFMTT("send thread[%d] exit.", GetCurrentThreadId());

return 0;
}

int start_net_thread() {
g_recv_thread = CreateThread(NULL, 0, recv_thread_loop, NULL, 0, NULL);

g_send_thread = CreateThread(NULL, 0, send_thread_loop, NULL, 0, NULL);

return 0;
}

int main(){
if(connect_to_server() != 0) 
{
    QMessageBox msgBox;
    msgBox.setText("failed.");
    msgBox.exec();
    return -1;
}

start_net_thread();

return 0;
}

цель: установить соединение клиента с сервером, передать и получить сообщение. Но функция recv возвращает ошибку 10057 (Socket is not connected.
A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using sendto) no address was supplied. — это с msdn).
В чём собственно дело?

код клиента:


#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <string.h>

#pragma comment(lib, "Ws2_32.lib")

int main(void)
{
    WSADATA wsadata;
    int iResult = WSAStartup(0x202, &wsadata);
    if (iResult != NO_ERROR)
    {
        wprintf(L"WSAStartup func failed with %ldn", WSAGetLastError());
        return -1;
    }

    SOCKET con = socket(AF_INET, SOCK_STREAM, 0);
    if (con == SOCKET_ERROR)
    {
        wprintf(L"socket func failed with %ldn", WSAGetLastError());
        WSACleanup();
        return -2;
    }

    struct sockaddr_in addr;

    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_port = htons(27015);

    iResult = connect(con, (SOCKADDR*)&addr, sizeof(addr));

    if (iResult == SOCKET_ERROR)
    {
        wprintf(L"connect func failed with %ldn", WSAGetLastError());
        closesocket(con);
        WSACleanup();
        return -3;
    }

    char* message = L"some data";

    iResult = send(con, message, (int)strlen(message), 0);
    printf("Sent %d bites", (int)strlen(message));
    if (iResult == SOCKET_ERROR)
    {
        wprintf(L"send func failed with %ldn", WSAGetLastError());
        closesocket(con);
        WSACleanup();
        return -4;
    }
    return 0;
}

код сервера:


#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <string.h>

#pragma comment(lib, "Ws2_32.lib")

int main(void)
{
    WSADATA wsadata;
    int iResult = WSAStartup(0x202, &wsadata);
    if (iResult != NO_ERROR)
    {
        wprintf(L"WSAStartup func failed with %ldn", WSAGetLastError());
        return -1;
    }

    SOCKET con = socket(AF_INET, SOCK_STREAM, 0);
    if (con == SOCKET_ERROR)
    {
        wprintf(L"socket func failed with %ldn", WSAGetLastError());
        WSACleanup();
        return -2;
    }

    struct sockaddr_in addr;

    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("0.0.0.0");
    addr.sin_port = htons(27015);

    iResult = bind(con, (SOCKADDR*)&addr, sizeof(addr));
    if (iResult != 0)
    {
        wprintf(L"bind func failed with %ldn", WSAGetLastError());
        closesocket(con);
        WSACleanup();
        return -3;
    }
    
    iResult = listen(con, SOMAXCONN);
    if (iResult != 0)
    {
        wprintf(L"listen func failed with %ldn", WSAGetLastError());
        closesocket(con);
        WSACleanup();
        return -4;
    }

    char buff[216];

    SOCKET acceptsocket = accept(con, NULL, NULL);
    if (acceptsocket == INVALID_SOCKET)
    {
        wprintf(L"accept func failed with %ldn", WSAGetLastError());
        closesocket(con);
        WSACleanup();
        return -5;
    }
    int length = recv(con, buff, 216, 0);
    if (length <= 0)
    {
        wprintf(L"recv func failed with %ldn", WSAGetLastError());
        closesocket(con);
        WSACleanup();
        return -6;
    }
    wprintf(L"%s", buff);

    closesocket(con);
    WSACleanup();
    return 0;
}

-1 / 0 / 1

Регистрация: 15.05.2014

Сообщений: 11

1

21.09.2008, 00:29. Показов 4893. Ответов 0


Я пишу клиент/серверное приложение, при попытке передать файл клиенту возникает ошибка: ‘10057: Socket is not connected’, хотя клиент подключается к серверу, я проверял вызов OnConnect.
Подскажите, пожалуйста, что сделать с этим сокетом, чтобы всё нормально работало?

Заранее благодарен, Вячеслав.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.09.2008, 00:29

1

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка создания временного файла тф2
  • Ошибка создания ключевой пары 1с отчетность