📄 gnet-iochannel.html
字号:
><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2943"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>len</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2948"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>bytes_read</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2953"><SPANSTYLE="white-space: nowrap"><SPANCLASS="emphasis"><ICLASS="EMPHASIS">Returns</I></SPAN> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P> </P></TD></TR></TBODY></TABLE></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN2958"></A><H3><ANAME="GNET-IO-CHANNEL-READLINE-STRDUP"></A>gnet_io_channel_readline_strdup ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><GTKDOCLINKHREF="GIOERROR">GIOError</GTKDOCLINK> gnet_io_channel_readline_strdup (<GTKDOCLINKHREF="GIOCHANNEL">GIOChannel</GTKDOCLINK> *channel, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> **buf_ptr, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> *bytes_read);</PRE></TD></TR></TABLE><P>Read a line from the channel. The line will be null-terminated andinclude the newline character. Similarly to g_strdup_printf, abuffer large enough to hold the string will be allocated.</P><P>Warnings: (in the gotcha sense, not the bug sense)</P><P>1. If the last character of the buffer is not a newline, the linewas truncated by EOF. So, do not assume the buffer ends with anewline.</P><P>2. <TTCLASS="PARAMETER"><I>bytes_read</I></TT> is actually the number of bytes put in the buffer.That is, it includes the terminating null character.</P><P>3. Null characters can appear in the line before the terminatingnull (I could send the string "Hello world\0\n"). If this mattersin your program, check the string length of the buffer against thebytes read.</P><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2974"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>channel</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2979"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>buf_ptr</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2984"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>bytes_read</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN2989"><SPANSTYLE="white-space: nowrap"><SPANCLASS="emphasis"><ICLASS="EMPHASIS">Returns</I></SPAN> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P> </P></TD></TR></TBODY></TABLE></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN2994"></A><H3><ANAME="GNETIOCHANNELWRITEASYNCSTATUS"></A>enum GNetIOChannelWriteAsyncStatus</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">typedef enum { GNET_IOCHANNEL_WRITE_ASYNC_STATUS_OK, GNET_IOCHANNEL_WRITE_ASYNC_STATUS_TIMEOUT, GNET_IOCHANNEL_WRITE_ASYNC_STATUS_ERROR} GNetIOChannelWriteAsyncStatus;</PRE></TD></TR></TABLE><P>Status for an asynchronous write via <AHREF="gnet-iochannel.html#GNET-IO-CHANNEL-WRITE-ASYNC">gnet_io_channel_write_async</A>(), passed by GNetIOChannelWriteAsyncFunc.</P><P></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3001"></A><H3><ANAME="GNETIOCHANNELWRITEASYNCID"></A>GNetIOChannelWriteAsyncID</H3><P>ID of an asynchronous write started with <AHREF="gnet-iochannel.html#GNET-IO-CHANNEL-WRITE-ASYNC">gnet_io_channel_write_async</A>(). The connection can be canceled by calling <AHREF="gnet-iochannel.html#GNET-IO-CHANNEL-WRITE-ASYNC-CANCEL">gnet_io_channel_write_async_cancel</A>() with the ID.</P><P></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3008"></A><H3><ANAME="GNET-IO-CHANNEL-WRITE-ASYNC"></A>gnet_io_channel_write_async ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><AHREF="gnet-iochannel.html#GNETIOCHANNELWRITEASYNCID">GNetIOChannelWriteAsyncID</A> gnet_io_channel_write_async (<GTKDOCLINKHREF="GIOCHANNEL">GIOChannel</GTKDOCLINK> *iochannel, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> length, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> timeout, <GTKDOCLINKHREF="GNETIOCHANNELWRITEASYNCFUNC">GNetIOChannelWriteAsyncFunc</GTKDOCLINK> func, <GTKDOCLINKHREF="GPOINTER">gpointer</GTKDOCLINK> user_data);</PRE></TD></TR></TABLE><P>Write <TTCLASS="PARAMETER"><I>buffer</I></TT> to <TTCLASS="PARAMETER"><I>iochannel</I></TT> asynchronously. When the operation is complete, <TTCLASS="PARAMETER"><I>func</I></TT> is called. The callback may also be called if there is an error or timeout. The timeout is in milliseconds. Use a <TTCLASS="PARAMETER"><I>timeout</I></TT> of 0 if no timeout is needed.</P><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3026"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>iochannel</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3031"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>buffer</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3036"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>length</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3041"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>timeout</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3046"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>func</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3051"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>user_data</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3056"><SPANSTYLE="white-space: nowrap"><SPANCLASS="emphasis"><ICLASS="EMPHASIS">Returns</I></SPAN> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P> </P></TD></TR></TBODY></TABLE></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3061"></A><H3><ANAME="GNET-IO-CHANNEL-WRITE-ASYNC-CANCEL"></A>gnet_io_channel_write_async_cancel ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">void gnet_io_channel_write_async_cancel (<AHREF="gnet-iochannel.html#GNETIOCHANNELWRITEASYNCID">GNetIOChannelWriteAsyncID</A> id, <GTKDOCLINKHREF="GBOOLEAN">gboolean</GTKDOCLINK> delete_buffer);</PRE></TD></TR></TABLE><P>Cancel an asynchronous write that was started with <AHREF="gnet-iochannel.html#GNET-IO-CHANNEL-WRITE-ASYNC">gnet_io_channel_write_async</A>(). Set <TTCLASS="PARAMETER"><I>delete_buffer</I></TT> to TRUE if the buffer should be deleted. TODO: The delete_buffer functionality will probably be removed in the next version (it will remain in GConn).</P><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3072"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>id</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3077"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>delete_buffer</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P> </P></TD></TR></TBODY></TABLE></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3082"></A><H3><ANAME="GNETIOCHANNELREADASYNCSTATUS"></A>enum GNetIOChannelReadAsyncStatus</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">typedef enum { GNET_IOCHANNEL_READ_ASYNC_STATUS_OK, GNET_IOCHANNEL_READ_ASYNC_STATUS_TIMEOUT, GNET_IOCHANNEL_READ_ASYNC_STATUS_ERROR} GNetIOChannelReadAsyncStatus;</PRE></TD></TR></TABLE><P></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3087"></A><H3><ANAME="GNETIOCHANNELREADASYNCID"></A>GNetIOChannelReadAsyncID</H3><P></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3091"></A><H3><ANAME="GNET-IO-CHANNEL-READ-ASYNC"></A>gnet_io_channel_read_async ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><AHREF="gnet-iochannel.html#GNETIOCHANNELREADASYNCID">GNetIOChannelReadAsyncID</A> gnet_io_channel_read_async (<GTKDOCLINKHREF="GIOCHANNEL">GIOChannel</GTKDOCLINK> *iochannel, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> length, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> timeout, <GTKDOCLINKHREF="GBOOLEAN">gboolean</GTKDOCLINK> read_one_byte_at_a_time, <GTKDOCLINKHREF="GNETIOCHANNELREADASYNCCHECKFUNC">GNetIOChannelReadAsyncCheckFunc</GTKDOCLINK> check_func, <GTKDOCLINKHREF="GPOINTER">gpointer</GTKDOCLINK> check_user_data, <GTKDOCLINKHREF="GNETIOCHANNELREADASYNCFUNC">GNetIOChannelReadAsyncFunc</GTKDOCLINK> func, <GTKDOCLINKHREF="GPOINTER">gpointer</GTKDOCLINK> user_data);</PRE></TD></TR></TABLE><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3107"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>iochannel</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3112"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>buffer</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3117"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>length</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3122"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>timeout</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3127"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>read_one_byte_at_a_time</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3132"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>check_func</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -