Use winsock2 so that mingw-gcc can get the correct values for multicast.
authorpatthoyts <patthoyts>
Tue, 10 Apr 2007 23:36:14 +0000 (23:36 +0000)
committerpatthoyts <patthoyts>
Tue, 10 Apr 2007 23:36:14 +0000 (23:36 +0000)
demos/chat.tcl
generic/udp_tcl.c
generic/udp_tcl.h
win/makefile.vc

index acef6988909cb2d2942b58db10a9fc7ceda33fe6..4818058a1d468ec0fd013d3035693bc6d1b19097 100644 (file)
@@ -2,8 +2,8 @@
 #
 # This is a sample application from TclUDP.
 #
-# This illustrates the use of multicast UDP messages to implement a primitive chat
-# application.
+# This illustrates the use of multicast UDP messages to implement a
+# primitive chat application.
 #
 # $Id$
 
@@ -33,7 +33,8 @@ proc CreateGui {socket} {
     scrollbar .s -command {.t yview}
     frame .f -border 0
     entry .f.e -textvariable ::_msg
-    button .f.ok -text Send -underline 0 -command "SendMessage $socket \$::_msg"
+    button .f.ok -text Send -underline 0 \
+        -command "SendMessage $socket \$::_msg"
     button .f.ex -text Exit -underline 1 -command {destroy .}
     pack .f.ex .f.ok -side right
     pack .f.e -side left -expand 1 -fill x
@@ -43,6 +44,7 @@ proc CreateGui {socket} {
     grid rowconfigure . 0 -weight 1
     bind .f.e <Return> {.f.ok invoke}
     .t tag configure CLNT -foreground red
+    .t configure -tabs {90}
 }
 
 proc SendMessage {sock msg} {
@@ -53,16 +55,26 @@ proc AddMessage {client msg} {
     set msg [string map [list "\r\n" "" "\r" "" "\n" ""] $msg]
     set client [lindex $client 0]
     if {[string length $msg] > 0} {
-        .t insert end "$client " CLNT "$msg\n" MSG
+        .t insert end "$client\t" CLNT "$msg\n" MSG
+        .t see end
     }
 }
 
-if {!$tcl_interactive} {
+proc Main {} {
+    variable Address
+    variable Port
+    variable sock
     set sock [Start $Address $Port]    
     CreateGui $sock
-    after idle [list SendMessage $sock "$::tcl_platform(user)@[info hostname] connected"]
+    after idle [list SendMessage $sock \
+                    "$::tcl_platform(user)@[info hostname] connected"]
     tkwait window .
     close $sock
+}
+
+if {!$tcl_interactive} {
+    set r [catch [linsert $argv 0 Main] err]
+    if {$r} {puts $::errorInfo} else {puts $err}
     exit 0
 }
 
index 44a82bc37fa0b1cf81b2003855faec178ffc20ca..3b2cb66a561229082919a0e8bac3dad0c484ddbb 100644 (file)
@@ -730,7 +730,7 @@ SocketThread(LPVOID arg)
         
         /* set each socket for select */
         for (statePtr = sockList; statePtr != NULL; statePtr=statePtr->next) {
-            FD_SET(statePtr->sock, &readfds);
+            FD_SET((unsigned int)statePtr->sock, &readfds);
             UDPTRACE("SET sock %d\n", statePtr->sock);
         }
         
@@ -1203,7 +1203,7 @@ UdpMulticast(ClientData instanceData, Tcl_Interp *interp,
     mreq.imr_interface.s_addr = INADDR_ANY;
     if (setsockopt(statePtr->sock, IPPROTO_IP, action,
                    (const char*)&mreq, sizeof(mreq)) < 0) {
-       Tcl_SetObjResult(interp, ErrorToObj("error changing multicast group"));
+        Tcl_SetObjResult(interp, ErrorToObj("error changing multicast group"));
         return TCL_ERROR;
     }
 
index ed14595b4ed02184bae95b81116629cd7b053ece..8359c7ea04ea9715e0739400b14d34ddcf6509d8 100644 (file)
@@ -27,7 +27,8 @@
 #endif
 
 #ifdef WIN32
-#  include <winsock.h>
+#  include <winsock2.h>
+#  include <ws2tcpip.h>
 #else
 #  if HAVE_UNISTD_H
 #    include <unistd.h>
index a1e00c439e704524b575f47891c1a6b5ef3dd604..38fb04e0fe13290bf33d38362b469436d767657e 100644 (file)
@@ -281,7 +281,7 @@ lflags      = $(lflags) -ws:aggressive
 dlllflags = $(lflags) -dll
 conlflags = $(lflags) -subsystem:console
 guilflags = $(lflags) -subsystem:windows
-baselibs   = $(TCLSTUBLIB) wsock32.lib
+baselibs   = $(TCLSTUBLIB) ws2_32.lib
 
 #---------------------------------------------------------------------
 # TclTest flags