|
|
|
Well, I do not care if select() takes 1 milli-sec to complete.
What I'm asking is why it in total takes 2 seconds (2000 select-loops) to conclude the port is closed (no listener).
-- Gisle V.
|
|
|
|
|
Because there is no way to determine there is no listener unless you wait an appropriate amount of time for the server you tried to connect to to respond. If you waited one millisecond and the server you're connecting to doesn't respond to the connection request for 500 milliseconds, your code just assumed there was no response, and therefore no listener on the other end. In reality, your code was impatient and didn't wait long enough for the response to the connection request.
|
|
|
|
|
That make sense. But where is that time-limit determined?
-- Gisle V.
|
|
|
|
|
It's part of the Connection to the socket. The timeout you're specifying is for data transfer and query once the connection is setup. It has nothing to do with the time it takes to setup the connection itself.
|
|
|
|
|
TIMEVAL is combination of seconds and microseconds; there is no explicit millisecond setting for TIMEVAL.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
No? tv.tv_usec = 1000; is 1 milli-seconds according to what I learned in 2nd grade.
-- Gisle V.
|
|
|
|
|
True. You've confirmed that tv.tv_sec == 0, right?
Keep Calm and Carry On
|
|
|
|
|
Just mentioning it. I would have said 1000 microseconds in the first place because the possibilities otherwise are endless.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Gisle Vanem wrote: And I'd expect this to be faster. That's the error. What gave you that expectation, and why burn time/money on it?
Gisle Vanem wrote: What / where is this 2 sec. set? Google around and posts point to the registry; but that's not it and will not work. It's not part of the .NET environment, but the network. It's not a regular "setting" of sorts, and 0s on a non-realtime OS is nonsense.
Even on a realtime OS, I'd expect a similar delay to ensure you do not receive packets that were intended for the (now) closed connection.
--edit; I forgot to mention, select is not broken.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
modified 2-Jul-22 16:33pm.
|
|
|
|
|
Hi,
I think it's waiting for the default SYN timeout period. I believe it's 1 second on Linux and 2 seconds on Windows.
You can change this value on Windows with the Set-NetTCPSetting[^] powershell cmdlet. You would need to set the InitialRtoMs value.
Although I don't actually know off the top of my head if this would fix your select() problem. Try it and let me know.
|
|
|
|
|
The usual dumb question from me... and I apologize for being this way. But I see as a trend here in CP project Articles' posters' run up to publishing ... tag lack, beyond the general Visual Studio. It's easy to browse the code; yes. Read the Format version, the actual VS "#" and then there's the "VisualStudioVersion".
I suppose I want to head off the "This project created with a newer version of Visual Studio" warning. But that "MinimumVisualStudioVersion" has always had me baffled as when I open a newer project that, if the "minimum" were indeed something to Visual Studio, my VS, which passes muster according to this spec, never seems to be able to do much in the way of filling out the Browser tree beyond the next message "fail to load project" (sp).
Short of suggesting I subscribe to the latest VS incarnation, are there any acceptable apologies for for this descriptive non sense from MS then?
|
|
|
|
|
|
Why has Binding never caught on in Windows Forms. I have been using binding in Wpf for years. Have not paid much attention to Windows Forms. Someone just pointed out that Windows Forms has binding. Looking it up they have had it since .Net2. Occasionally I have had to maintain a Windows Forms app and have never seen it used.
So many years of programming I have forgotten more languages than I know.
|
|
|
|
|
I have used binding for more than 10 years in Windows Forms projects.
|
|
|
|
|
If one never leaves the Designer, and believes all the "no code behind", then one never learns about Windows Forms binding, etc. It's when you start writing your own framework(s) and patterns that all this starts to come to the surface. For some, that is a bad thing ("details").
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Binding is Good(Less coding) and Bad(more code to control)
If you want full control on your form workflow, don't use binding
If you bind a control (textbox) to datasource (access or mssql) to field ID (AutoNumber) and you want to add new record, the textbox will display -1 (you have more coding to prevent it)
sometimes you will not be able to leave textbox binded to numberic (int,dec) empty (blank), unless you enter a value (you have more coding to allow it)
binding is powerful and easy if used with dataset, but not easy if used with LinqToSql or EF
In my form, I use binding and manual where necessary.
|
|
|
|
|
Samir Ibrahim wrote: If you bind a control (textbox) to datasource (access or mssql) to field ID (AutoNumber) and you want to add new record, the textbox will display -1 (you have more coding to prevent it) Never show the autoId to a user. If you need an ID for the user, add a column for it, but don't use the PK.
Binding is cheap.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
>> add a column for it, but don't use the PK.
That will require creating another table to handle the numbering for your application plus coding to handle the incremented value in that column, well, simply, I don't bind the PK, I handle it manually.
|
|
|
|
|
I've come to realize there's no point in binding the autonumber/PK because, at most, it's only used for display. It's not something the user can edit. I display it in a label, using "New" when it's -1.
|
|
|
|
|
>>at most, it's only used for display. It's not something the user can edit. I display it in a label
It can be used for entering a number to search for, so I don't bind the PK to a textbox, I handle it manually.
|
|
|
|
|
|
Hello,
I've been working with this batch file for a few hours and I can't seem to get this file to work properly and I can't use PowerShell because my company's network won't allow it so I'm using a batch file. I'm trying to go through a list of machines and I can't seem to get past the first machine. I think I found the issue though but can't seem to get the line fixed to go to the second machine. I think it's after the findstr line after troubleshooting the code line by line.
Here's my code of what I tried.
""
@echo off
For /f %%i in (C:\Users\%username%\desktop\computers.txt) do (
echo %DATE% %TIME%
echo.
Echo ************************
Echo %%i
Echo ************************
:name
ping %%i /n 1 | find "Reply from %%i:"
if errorlevel 0 echo The computer is online and on VPN
if errorlevel 1 echo The computer is offline or not on VPN
if errorlevel 1 goto skip
REG QUERY "\\%%i\regpath" | findstr "Computer"
query user /server:%%i
dir /T:W "\\%%i\C$\path\file.exe" | find "exe"
(findstr /i /l "configurationserver=https://URL" \\%%i\C$\path\file.ini > NUL && (goto skip) || goto fixfile)
:FIXFILE
echo pfile.ini isn't good
code to fix issue
:SKIP
echo file is good
)
pause
""
for testing purposes the computers.txt has two computer IP Addresses
%IPADDRESS%
%IPADDRESS%
I've tried errorlevel for the findstr and also the second solution within the code.
modified 19-Nov-21 21:01pm.
|
|
|
|
|
It's impossible to test your script, but I will say if FINDSTR finds the string in the file, ERRORLEVEL will be 0. If not found, or the file does not exist, ERRORLEVEL will be 1.
When you check for ERRORLEVEL in a block of IF statements, you have to check for the highest possible errorlevel value first and check for 0 last. This is because the IF ERRORLEVEL will return true if ERRORLEVEL is greater than or equal to the specified value. So if you check for 0 first, the result will always be true, no matter what the value of ERRORLEVEL is.
Remove the ECHO's from your IF statements and just jump to a block that contains the ECHO statements and what to do after that. This will eliminate the need for multiple IF statements checking for the same ERRORLEVEL.
|
|
|
|