Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: WinSock выдает ошибку Добавлено: 06.05.05 10:17  

Автор вопроса:  Рустам
Помогите пожалуйста!
При отправке данных клиентской программой
выдается ошибка
"Wrong protocol or connection state for the
requested transaction or request"

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 06.05.05 10:28
код в студию!

Ответить

Номер ответа: 2
Автор ответа:
 ArtBase



ICQ: 55593017 

Вопросов: 23
Ответов: 76
 Профиль | | #2 Добавлено: 06.05.05 14:02
Ты хоть кусок твоего кода кинь, чтоб люди посмотрели в чем причина.

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 06.05.05 15:03
Может, он не подключен? А может, он уже не подключен?

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 06.05.05 15:19
Ну, не считая того что он мог в коде напартачить, MSDN говорит следующее:
1.

SYMPTOMS
A Winsock control may fire a DataArrival event with valid data length (a number that is greater than 0) after the Close event. If you try to call the GetData method for that event, you receive the following error message:
Run-time error: 40006

Wrong protocol or connection state for the requested transaction or request.
CAUSE
This problem occurs because of a bug in the Winsock control. Although the occurrence of this problem depends on data flow between two entities, the problem may occur more consistently when the client (receiver) application is much slower than the server (transmitter) application, and when no application-level flow control is implemented.
RESOLUTION
To resolve this problem, obtain the latest service pack for Microsoft Visual Studio 6.0. For more information, visit the following Microsoft Developer Network (MSDN) Web site:
http://msdn.microsoft.com/vstudio/previous/vs6/downloads/default.aspx

2.

SYMPTOMS
If you call the SendData method in the WinSock control before the socket has been connected, you will receive the Microsoft Visual Basic Error:

Run-time error: 40006

"Wrong protocol or connection state for the requested transaction or request."
CAUSE
The code is trying to call the SendData method before the port has actually been connected. The Connect method in Visual Basic is asynchronous and is more like a request to connect to the Winsock port.
RESOLUTION
The code must wait until the Connect event is fired before attempting to call the SendData or GetData methods. The Connect event is a signal that the connect request has been accepted and the connection is established.

3.

SYMPTOMS
In the Usage Analyst import module, the following error message is returned from the Whois command:
Runtime error 40006. Wrong protocol or connection state for the requested transaction or request.
CAUSE
The import module Whois function is querying for data without checking to ensure that the host connection is still alive.
RESOLUTION
To resolve this problem, obtain the following fix or wait for the next Microsoft Site Server 2.0 service pack.

This fix should have the following time stamp:
 Usage Analyst Developer Edition for Access

12/10/97 05:47p 3,363,328 import.exe (Intel)

 Usage Analyst Developer Edition for SQL

12/10/97 05:08p 3,634,688 import.exe (Intel)

 Usage Analyst Standard Edition for Access

12/10/97 05:36p 3,361,280 import.exe (Intel)

 Usage Analyst Standard Edition for SQL

12/10/97 05:24p 3,618,304 import.exe (Intel)

То есть, по русски - баги винсока
В первом случае, баг с обработкой сообщения DataArrival после сообщения Close, даже если данные были корректные.
Во втором - вызов SendData до того как порт законнектился, поскольку коннект происходит асинхронно.
Третий относится к базам, так что тебе он вряд ли интересен...

Ответить

Номер ответа: 5
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #5 Добавлено: 06.05.05 22:37
А у меня глюк был с Accept'ом...

Ответить

Номер ответа: 6
Автор ответа:
 Рустам



Вопросов: 9
Ответов: 10
 Профиль | | #6 Добавлено: 08.05.05 04:58
>>>>>КЛИЕНТ<<<<
Private Sub Form_Load()
Dim remote As String
puttime.Close
remote = InputBox("Введите имя компьютера на котором" & Chr(13) & "Запущенна серверная часть программы", "Имя сервера", "A6";)
puttime.RemoteHost = remote
puttime.RemotePort = 1101
puttime.Connect
puttime.SendData testind
End Sub

Private Sub Form_Unload(Cancel As Integer)
puttime.Close
End Sub

Private Sub puttime_DataArrival(ByVal bytesTotal As Long)
puttime.GetData ti
puttime.Close
End Sub
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>>>>>СЕРВЕР<<<<<<<<<<<<<<<<<<<
Private Sub MDIForm_Load()
intMax = 0
sendtime(0).LocalPort = 1101
sendtime(0).Listen
End Sub

Private Sub sendtime_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sendtime(intMax)
sendtime(intMax).LocalPort = 0
sendtime(intMax).Accept requestID
End If
End Sub

Private Sub sendtime_DataArrival(Index As Integer, ByVal bytesTotal As Long)
sendtime(intMax).GetData (ti)
sendtime(intMax).SendData (tmr)
sendtime(intMax).Close
End Sub
>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
Смысл в том что после соединения клиент отсылает
некоторый номер. Потом сервер вынимает из файла запись с
этим номером и отсылает ее клиенту.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<

Ответить

Номер ответа: 7
Автор ответа:
 admsasha



ICQ: 234002454 

Вопросов: 56
Ответов: 69
 Web-сайт: dansoft.krasnokamensk.ru
 Профиль | | #7
Добавлено: 09.05.05 04:44
puttime.SendData testind


перед отсылки данных, сделай ожидание подлючения, а не сразу шли данные.

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 09.05.05 14:30
или хотя бы DoEvents поставь...

puttime.Connect
DoEvents 'Так надежнее
puttime.SendData testind

Ответить

Номер ответа: 9
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #9
Добавлено: 14.05.05 22:28
в событии подключения винсока

Ответить

Номер ответа: 10
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #10
Добавлено: 14.05.05 22:29
шли данные.

п.с. извените, случайно нажал на сохранить :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам