Marc Lehmann said: > > I am trying to port a gtk2-perl program to windows (in theory an easy > task). > > However, it's using sockets, and the only way to use them in a nonblocking > way (under Gtk2) seems to be to use glib watchers. Now, the problem is > that, when my callback gets called, glib has already read the data from > the filehandle, and there doesn't seem to be support for giochannels in > the Glib module, so there is no way to actually get the data.
Have you tried recv() instead of <> or sysread? giochannel.h says "Contrary to IO channels for file descriptors (on *Win32), you can use normal recv() or recvfrom() on sockets even if GLib is polling them," and g_io_channel_unix_new() on win32 calls g_io_channel_win32_new_socket() when it determines that the fd is actually a socket. > Is this a known problem or did I just miss the giochannel > interface? (Sorry if it's the latter case). Not a problem known to me, at least. The only hint of the GIOChannel API visible at the perl level is Glib::IO::add_watch(). This was by design, because GIOChannel provides functionality normally provided by native perl file handles, and we made a conscious effort not to duplicate these things. Personally, i had no idea that sockets behaved that way on win32. So, er, it's probably broken. -- muppet <scott at asofyet dot org> _______________________________________________ gtk-perl-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtk-perl-list
