📄 如何编写linux下的客户机-服务器软件-xxlinux_com2.htm
字号:
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>#include <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>#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>int main(int argc,char
*argv[])<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>int
listenfd,communfd;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>struct sockaddr_in
servaddr;<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>pid_t
childpid;<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>time_t
tick;<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>char
buf[1024];<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("Could not create
socket");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>servaddr.sin_family=AF_INET;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>servaddr.sin_addr.s_addr=INADDR_ANY;
<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>servaddr.sin_port=htons(13);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if(bind(listenfd,(struct
sockaddr *)&servaddr,sizeof(servaddr))==-1)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("bind
error");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if(listen(listenfd,254)==-1)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("listen
error");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>while(communfd=accept(listenfd,(struct
sockaddr*)NULL,NULL))<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if((childpid=fork())==-1)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("fork
error");<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(childpid==0)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>tick=time(NULL);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>snprintf(buf,sizeof(buf),"%.24s<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>",ctime(&tick));<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>write(communfd,buf,strlen(buf));<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>close(communfd);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>else
if(childpid>0)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>close(communfd); <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(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>/*timeclient.h*/<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>#include <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>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>#include <SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>int main(int argc,char
*argv[])<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>int communfd,n;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>struct sockaddr_in
servaddr;<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>char
recieve[1024],buf[1024];<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if(argc!=2)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("Usage: client
");<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if((communfd=socket(AF_INET,SOCK_STREAM,0))==-1)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("socket
error");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>servaddr.sin_family=AF_INET;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>servaddr.sin_port=htons(13);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if((servaddr.sin_addr.s_addr=inet_addr(argv[1]))==INADDR_NONE)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("inet_addr
error");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if(connect(communfd,(struct
sockaddr*)&servaddr,sizeof(servaddr))==-1)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("connect
error");<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(1);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>while((n=read(communfd,recieve,1024))>0)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>{<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>recieve[n]=0;<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>if(fputs(recieve,stdout)==EOF)<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("fputs
error");<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>close(communfd);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>exit(0);<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>}<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>用gcc编译两个源程序分别取名为server和client,以根用户身份运行服务器程序(设服务器网络地址为192.168.0.1):<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>server &<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>然后运行客户机程序(设服务器网络地址为192.168.0.1):<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>client 192.168.0.1<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>在客户机上就会反映出服务器上当前的时间如(Tue
Feb 29 21:46:19 2000)。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR>以上程序代码在redhat
6.0上试验通过。在程序代码中有关库函数snprintf、fputs、read、write、close的用法就不在这里说明了,如想了解这些库函数的调用方法可到我的网页http://lzdx.yeah.
net/pro_unix.html去查找。在我的网页http://lzdx.yeah.net/pro_uici.html中有关于通用Internet接口(UICI)专用库的介绍,通用Internet接口(UICI)利用Socket库函数提供了一个简化的独立于传输的接口,它从整体上简化了网络程序设计过程。有兴趣的人可到那里去看看。最后祝愿我们每个人都能编写出自己的网络程序。<SPAN
style="DISPLAY: none">it6Linux联盟</SPAN><BR></FONT><A
href="http://www.xxlinux.com/">Linux联盟</A>收集整理
,转贴请标明原始链接,如有任何疑问欢迎来本站<A
href="http://bbs.xxlinux.com/">Linux论坛</A>讨论</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">1</A> <A
href="http://www.xxlinux.com/linux/article/development/soft/20061016/5033_2.html">[<STRONG>2</STRONG>]</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_com2.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_com2.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_com2.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_com2.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_com2.files/urchin.js"
type=text/javascript>
</SCRIPT>
<SCRIPT type=text/javascript>
_uacct = "UA-244517-1";
urchinTracker();
</SCRIPT>
<SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com2.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 + -