Winsock UDP Serverport einstellen
Verfasst: 01.01.2011 22:13
Hallo zusammen,
Ich möchte mit folgendem Programm ein einfaches BACnet Telegramm als Broadcast über das Netzwerk schicken. Tut alles prima, nur bekomme ich nicht heraus, wie ich den UDP-Port der Source einstellen kann. Kann mir jemand helfen?
Der Server Source Code zählt immer um eines weiter.
Danke schon mal ...
Ich möchte mit folgendem Programm ein einfaches BACnet Telegramm als Broadcast über das Netzwerk schicken. Tut alles prima, nur bekomme ich nicht heraus, wie ich den UDP-Port der Source einstellen kann. Kann mir jemand helfen?
Der Server Source Code zählt immer um eines weiter.
Code: Alles auswählen
InitNetwork()
Procedure.l SendMagicPacket(client_ip.s="255.255.255.255")
*SendePuffer = AllocateMemory(480)
Protected Success.l=0
Protected client_bip.l
Protected client_port.l
Protected client_bport.w
Protected client_socket.l
Protected socket_keepalive.b
Protected server_mode.l
RAW$ = "810B001501001000C4020000772201E091002201CA"
i= 0
For K = 1 To Len(RAW$)-1 Step 2
PokeB(*SendePuffer+i, Val("$"+Mid(RAW$,K,2)))
i = i+1
Next
client_bip = inet_addr_(client_ip)
client_port = 47808
client_bport = htons_(client_port) ; convert to long
client_socket = SOCKET_(#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP) ; create the socket
If client_socket
socket_keepalive = 1
If setsockopt_(client_socket, #SOL_SOCKET, #SO_BROADCAST, @socket_keepalive, 1) = 0
sockaddr.SOCKADDR_IN
client_sockaddr\sin_family = #AF_INET
client_sockaddr\sin_port = client_bport
client_sockaddr\sin_addr = client_bip
server_mode = 0
If ioctlsocket_(client_socket,#FIONBIO,@server_mode) = 0
send.l = sendto_(client_socket, *SendePuffer, i, 0, @client_sockaddr, 16)
If send=i And WSAGetLastError_()=0
Debug "I-am packet send"
Success=1
EndIf
EndIf
EndIf
closesocket_(client_socket)
EndIf
FreeMemory(*SendePuffer)
ProcedureReturn Success
EndProcedure
SendMagicPacket()