📄 如何编写linux下的客户机-服务器软件-xxlinux_com.htm
字号:
sin_zero[8];<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>};<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>sin_family一般为AF_INET,sin_port为端口号,由于使用不同字节顺序的机器必须作转换,故应使用宏命令htons(host
to network
short)来转换端口号,sin_addr将置为INADDR_ANY。这三个值设置完成后*address参数才有意义。在编写代码时,应先设置*address参数内部各成员变量的值,再调用bind。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>(3)listen<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用方式:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>int listen(int s,int
backlog);<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>简要说明:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>本函数使socket端口能够接受从客户机来的连接请求,正常调用返回0,出错返回-1。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>s参数为socket产生的文件描述符,backlog为所能接受客户机的最大数目。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>socket,bind,listen
三个函数的综合调用最终在服务器上产生一个能接受客户机请求的监听文件描述符s。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>(4)accept<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用方式:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>int accept(int s,struct
sockaddr *address,int *address_len);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>简要说明:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>当有客户机发出连接请求时,此函数初始化这个连接。正常调用返回与客户机通信的通信文件描述符,出错返回-1。参数s为socket调用返回的文件描述符,address将用来存储客户机的信息,此信息由accept填入,当与客户机连接时,客户机的地址与端口将填到此处。address_len是客户机地址长度的字节数,也由accept填入。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>(5)connect<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用方式:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>int connect(int s,struct
sockaddr *address,size_t address_len);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>简要说明:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>客户机调用socket建立传输端口后,调用connect来建立与远程服务器相连的连接线路。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>此函数的参数调用同bind。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>(6)inet_addr<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用方式:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>in_addr_t inet_addr(const
char *addstring);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>简要说明:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>此函数将字符串addstring表示的网络地址(如192.168.0.1)转换成32位的网络字节序二进制值,若成功返回32位二进制的网络字节序地址,若出错返回
INADDR_NONE。INADDR_NONE是32位均为1的值(即255.255.255.255,它是Internet的有限广播地址),故如果要转换的addstring是255.255.255.255,函数调用将失败。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>(7)fork<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用方式:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>pid_t fork(void);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>简要说明:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>fork的作用是拷贝父进程的内存映象来创建子进程,两个进程将接着fork后的指令继续执行。
事实上它返回两个进程控制号,对于父进程它返回子进程的进程ID,对于子进程它返回0。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>可用下边的代码调用fork:<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>pid_t childpid;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if((childpid=fork())=-1){<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("The fork
failed");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>else if(child==0){<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用子进程;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>else if(child>0){<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>调用父进程;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><A
href="http://www.xxlinux.com/">Linux联盟</A>收集整理
,转贴请标明原始链接,如有任何疑问欢迎来本站<A
href="http://bbs.xxlinux.com/">Linux论坛</A>讨论</FONT></FONT></FONT></TD>
<TD width=8></TD></TR>
<TR>
<TD></TD>
<TD>
<DIV align=right>分页:<A
href="http://www.xxlinux.com/linux/article/development/soft/20061016/5033.html">[<STRONG>1</STRONG>]</A> <A
href="http://www.xxlinux.com/linux/article/development/soft/20061016/5033_2.html">2</A></DIV></TD>
<TD></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
<TBODY>
<TR>
<TD align=left></TD></TR>
<TR>
<TD align=middle height=12></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
<TBODY>
<TR>
<TD align=right>【<A
href="http://www.xxlinux.com/linux/e/pl?classid=13&id=5033">评论</A>】【<A
href="http://www.xxlinux.com/linux/e/member/fava/add?classid=13&id=5033">加入收藏夹</A>】【<A
href="javascript:doZoom(16)">大</A> <A
href="javascript:doZoom(14)">中</A> <A
href="javascript:doZoom(12)">小</A>】【<A
href="http://www.xxlinux.com/linux/e/DoPrint?classid=13&id=5033"
target=_blank>打印</A>】【<A
href="javascript:window.close()">关闭</A>】</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
<TBODY>
<TR>
<TD>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-3701573918329010";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as_rimg";
google_cpa_choice = "CAAQ_ZOgnAIaCLtUj9RC7Q0mKJnA93M";
google_ad_channel = "";
//--></SCRIPT>
<SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=0 width="99%" align=center
bgColor=#ededef border=0>
<TBODY>
<TR>
<TD height=25>※ 相关链接</TD></TR>
<TR>
<TD bgColor=#ffffff
height=35>无相关信息</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE class=copyright_table cellSpacing=0 cellPadding=0 width=778 align=center
background=如何编写Linux下的客户机-服务器软件-xxlinux_com.files/copyright.gif border=0>
<TBODY>
<TR>
<TD align=middle width=150 rowSpan=5></TD>
<TD width=543 colSpan=2 height=2></TD></TR>
<TR>
<TD class=copyright_td align=middle width=543></TD>
<TD class=copyright_td align=middle width=150 rowSpan=3></TD></TR>
<TR>
<TD class=copyright_td width=543>
<DIV align=center>© CopyRight 2006-2009 xxlinux.com.Inc All Rights
Reserved</DIV></TD></TR>
<TR>
<TD class=copyright_td align=middle width=543>
<DIV align=center>Powered by xxlinux.com</DIV></TD>
<TD><A href="http://www.freesitemapgenerator.com/"><IMG
style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px"
alt="Free Sitemap Generator"
src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/fsgbig1.gif" border=0></A>
<SCRIPT language=javascript>
/* FSG 0.96 script */
var fsg_Live_date_package_version='0.96';
var fsg_image = 'big';
var fsg_serial = 'ef26847978f6b45b3eeace2c7fb1334f';
</SCRIPT>
<SCRIPT language=javascript
src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/fsg096.js"></SCRIPT>
</TD></TR>
<TR>
<TD width=543 colSpan=2 height=0></TD></TR></TBODY></TABLE>
<TABLE
style="BORDER-TOP-WIDTH: 1px; BORDER-RIGHT: #c0c0c0 1px solid; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT: #c0c0c0 1px solid"
cellSpacing=0 cellPadding=0 width=778 align=center bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD bgColor=#dbe2e8 height=2></TD></TR>
<TR>
<TD bgColor=#c5cfd9 height=1></TD></TR>
<TR>
<TD bgColor=#ffffff height=1></TD></TR></TBODY></TABLE>
<SCRIPT type=text/javascript><!--
var adlogger_loc = "http://www.xxlinux.com/adlogger";
var channel_id = "";
//--></SCRIPT>
<SCRIPT src="" type=text/javascript>
</SCRIPT>
<SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/urchin.js"
type=text/javascript>
</SCRIPT>
<SCRIPT type=text/javascript>
_uacct = "UA-244517-1";
urchinTracker();
</SCRIPT>
<SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/onclick.htm"></SCRIPT>
<!--Published Date:2007-11-19 17:39:18 Powered by www.phome.net,Products:Empire CMS--></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -