CONST ChunkSize = 512
INCLUDE "hug.bac", INIT, HUGOPTIONS, WINDOW, FRAME, ATTACH, TEXT, \
STOCK, DISPLAY, CALLBACK, QUIT, EDIT, GRAB$, TIMEOUT
OPTION NETWORK BROADCAST
OPEN "*:12345" FOR SERVER AS brcast
FUNCTION Check_Data
LOCAL total$
WHILE ISTRUE(WAIT(brcast, 50))
RECEIVE dat$ FROM brcast
total$ = total$ & dat$
WEND
IF LEN(total$) AND GRAB$(txt) != total$ THEN
CALL Clear_Text
TEXT(txt, total$)
ENDIF
RETURN TRUE
END FUNCTION
SUB Send_Text
LOCAL x
LOCAL data$
data$ = GRAB$(txt)
OPEN "255.255.255.255:12345" FOR NETWORK AS mynet
FOR x = 1 TO LEN(data$) STEP ChunkSize
SEND MID$(data$, x, ChunkSize) TO mynet CHUNK ChunkSize
NEXT
CLOSE NETWORK mynet
END SUB
SUB Clear_Text
TEXT(txt, "")
END SUB
INIT
HUGOPTIONS("TABLE 100 100")
win = WINDOW("Talk To Me", 500, 500)
PROPERTY(win, "icon-name", "gtk-network")
frame = FRAME(98, 89)
ATTACH(win, frame, 1, 1)
txt = EDIT(96, 87)
ATTACH(win, txt, 2, 2)
send_button = STOCK("gtk-network", 25, 8)
ATTACH(win, send_button, 1, 91)
CALLBACK(send_button, Send_Text)
clear_button = STOCK("gtk-clear", 25, 8)
ATTACH(win, clear_button, 27, 91)
CALLBACK(clear_button, Clear_Text)
exit_button = STOCK("gtk-quit", 25, 8)
ATTACH(win, exit_button, 74, 91)
CALLBACK(exit_button, QUIT)
TIMEOUT(100, Check_Data)
DISPLAY