Многоадресной отправке ответили, получение требует подписки к группе многоадресной передачи.
Это (все еще) кажется недокументированным, но было покрыто в списке рассылки erlang-вопросов прежде. http://www.erlang.org/pipermail/erlang-questions/2003-March/008071.html
{ok, Socket} = gen_udp:open(Port, [binary, {active, false},
{reuseaddr, true},{ip, Addr},
{add_membership, {Addr, LAddr}}]).
, где эти Addr
группа многоадресной передачи, и LAddr
, является локальным интерфейсом. (любезность кода mog)
те же опции, используемые выше, могут быть переданы inet:setopts
включая {drop_membership, {Addr, LAddr}}
, чтобы прекратить слушать группу.
Ответ Эндрю неверен. LTrim, RTrim и Trim удаляют только пробелы, а не табуляции.
Я переформатировал ваш код и добавил функцию для удаления любых начальных и конечных символов.
filename="test.txt"
set fso = createobject("scripting.filesystemobject")
set f = fso.opentextfile(filename)
do while not f.AtEndOfStream
s = TrimChars(f.readline, " " + vbTab)
wscript.echo "|" & s & "|"
loop
f.close
set f = nothing
set fso = nothing
''---
function TrimChars(s, sChars)
dim n, nLen, nStart
nLen = Len(s)
if nLen = 0 then
TrimChars = s
exit function
end if
''- skip leading chars
n = 1
do while (n <= nLen) And (InStr(sChars, Mid(s, n, 1)) > 0)
n = n + 1
loop
nStart = n
''- skip trailing chars
n = nLen
do while (n > nStart) And (InStr(sChars, Mid(s, n, 1)) > 0)
n = n - 1
loop
''- return remaining chars
nLen = n - nStart + 1
if (nLen > 0) and (nStart <= len(s)) then
TrimChars = Mid(s, nStart, nLen)
else
TrimChars = ""
end if
end function
Эта функция удаляет все начальные пробелы (пробелы, табуляции и т. Д.) Из строки:
Function LTrimEx(str)
Dim re
Set re = New RegExp
re.Pattern = "^\s*"
re.Multiline = False
LTrimEx = re.Replace(str, "")
End Function
Function LTrimEx(str)
Do Until x
If Left(str, 1) = Chr(32) Or Left(str, 1) = Chr(9) then
str = Right(str, Len(str) - 1)
Else
x = true
End If
Loop
LTrimEx = str
End Function
For a both left and right trim (including tabs, carriage return, line feeds, spaces) in a multiline string this will work.
Function MultilineTrim (Byval TextData)
Dim textRegExp
Set textRegExp = new regexp
textRegExp.Pattern = "\s{0,}(\S{1}[\s,\S]*\S{1})\s{0,}"
textRegExp.Global = False
textRegExp.IgnoreCase = True
textRegExp.Multiline = True
If textRegExp.Test (TextData) Then
MultilineTrim = textRegExp.Replace (TextData, "$1")
Else
MultilineTrim = ""
End If
End Function