⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 如何编写linux下的客户机-服务器软件-xxlinux_com.htm

📁 如何编写linux的客户端与服务器的教程,简单实用
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                                title=Ubuntu下两个项目管理工具Dia和Planner介绍 
                                href="http://www.xxlinux.com/linux/article/development/soft/20071101/11438.html" 
                                target=_blank>Ubuntu下两个项目管理工具Dia和</A></TD></TR>
                                <TR>
                                <TD height=20>·<A title=Linux串口编程分析 
                                href="http://www.xxlinux.com/linux/article/development/soft/20071029/11228.html" 
                                target=_blank>Linux串口编程分析</A></TD></TR>
                                <TR>
                                <TD height=20>·<A 
                                title=在Ubuntu下建立PowerPC405EP的开发环境 
                                href="http://www.xxlinux.com/linux/article/development/soft/20071024/10909.html" 
                                target=_blank>在Ubuntu下建立PowerPC405EP的</A></TD></TR>
                                <TR>
                                <TD height=20>·<A title=程序员的VI编辑器简明教程 
                                href="http://www.xxlinux.com/linux/article/development/soft/20071023/10824.html" 
                                target=_blank>程序员的VI编辑器简明教程</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD align=middle 
          background=如何编写Linux下的客户机-服务器软件-xxlinux_com.files/side_bg_r2_c1.gif 
          height=4>
            <SCRIPT type=text/javascript><!--
google_ad_client = "pub-3701573918329010";
google_ad_width = 120;
google_ad_height = 240;
google_ad_format = "120x240_as_rimg";
google_cpa_choice = "CAAQpfWujAIaCNr1I9Q-PDMiKJPM93M";
google_ad_channel = "";
//--></SCRIPT>

            <SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/show_ads.js" 
            type=text/javascript>
</SCRIPT>
          </TD></TR>
        <TR>
          <TD align=middle></TD></TR></TBODY></TABLE></TD>
    <TD width=1 bgColor=#b4b4b4></TD>
    <TD width=1 bgColor=#ffffff></TD>
    <TD width=1></TD>
    <TD vAlign=top align=middle width=553>
      <TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
        <TBODY>
        <TR>
          <TD align=middle bgColor=#ffffff><!-- SiteSearch Google -->
            <FORM action=http://www.google.cn/custom method=get target=_top>
            <TABLE bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD vAlign=top noWrap align=left height=32><A 
                  href="http://www.google.com/"><IMG alt=Google 
                  src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/Logo_25gry.gif" 
                  align=middle border=0></IMG></A> </TD>
                <TD noWrap><INPUT type=hidden value=xxlinux.com 
                  name=domains></INPUT> <INPUT maxLength=255 size=45 
                  name=q></INPUT> <INPUT type=submit value=搜索 name=sa></INPUT> 
                </TD></TR>
              <TR>
                <TD>&nbsp;</TD>
                <TD noWrap>
                  <TABLE>
                    <TBODY>
                    <TR>
                      <TD><INPUT type=radio value="" name=sitesearch></INPUT> 
                        <FONT color=#000000 size=-1>Web</FONT> </TD>
                      <TD><INPUT type=radio CHECKED value=xxlinux.com 
                        name=sitesearch></INPUT> <FONT color=#000000 
                        size=-1>xxlinux.com</FONT> </TD></TR></TBODY></TABLE><INPUT 
                  type=hidden value=pub-3701573918329010 name=client></INPUT> 
                  <INPUT type=hidden value=1 name=forid></INPUT> <INPUT 
                  type=hidden value=GB2312 name=ie></INPUT> <INPUT type=hidden 
                  value=GB2312 name=oe></INPUT> <INPUT type=hidden 
                  value=GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1; 
                  name=cof></INPUT> <INPUT type=hidden value=zh-CN 
                  name=hl></INPUT> </TD></TR></TBODY></TABLE></FORM><!-- SiteSearch Google --></TD></TR>
        <TR>
          <TD>
            <SCRIPT type=text/javascript><!--
google_ad_client = "pub-3701573918329010";
//468x60, 创建于 07-11-18
google_ad_slot = "8355102556";
google_ad_width = 468;
google_ad_height = 60;
//--></SCRIPT>

            <SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/show_ads.js" 
            type=text/javascript>
</SCRIPT>
          </TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
        <TBODY>
        <TR>
          <TD class=title_td><FONT 
            size=3><STRONG>如何编写Linux下的客户机/服务器软件</STRONG></FONT></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
        <TBODY>
        <TR>
          <TD height=6></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 border=0>
        <TBODY>
        <TR>
          <TD align=middle>
            <TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
              <TBODY>
              <TR>
                <TD align=middle colSpan=4>
                  <DIV align=center>[ 作者:dexin&nbsp;&nbsp;加入时间:2006-10-16 
                  12:15:46&nbsp;&nbsp;来自:Linux联盟收集 
        ]</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
        <TBODY>
        <TR>
          <TD background=如何编写Linux下的客户机-服务器软件-xxlinux_com.files/title_line.gif 
          height=3></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
        <TBODY>
        <TR>
          <TD align=left>
            <SCRIPT type=text/javascript><!--
google_ad_client = "pub-3701573918329010";
//336x280, 红色明显 07-11-18
google_ad_slot = "8859283166";
google_ad_width = 336;
google_ad_height = 280;
//--></SCRIPT>

            <SCRIPT src="如何编写Linux下的客户机-服务器软件-xxlinux_com.files/show_ads.js" 
            type=text/javascript>
</SCRIPT>
          </TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=548 border=0>
        <TBODY>
        <TR>
          <TD width=8></TD>
          <TD><FONT class=f14 id=zoom><FONT color=#000000><FONT 
            color=#333333>Linux以其源代码公开闻名于世,并以其稳定性和可靠性雄霸操作系统领域,在网络应用技术方面使用得更加广泛。很久以来它就是Windows的重要对手之一。随着网络时代的来临,Linux的这种优势已变得更加突出。本文将论述如何在Linux环境下利用Socket实现客户机/服务器通信。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>随着网络技术的发展,网络结构已从过去的主机/终端型、对等型发展到现在广为使用的客户机/服务器型。客户机/服务器模型应用十分广泛,在Internet上WWW,E-mail,FTP等都是基于这种模型的。在面向连接的通信模式下,服务器打开监听端口,监听网络上其它客户机向该服务器发出的连接请求,当收到一个请求信号时与该客户机建立一个连接,之后两者进行交互式的通信。具体步骤可这样组织:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>服务器:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>1.打开一个已知的监听端口,如smtp为25、pop3为110、ftp为21、telnet为23等。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>2.在监听端口上监听客户机的连接请求,如果有客户机请求连接则建立一个连接线路。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>3.在连接线路上与客户机通信。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>4.通信完毕后关闭连接线路并继续监听客户机的连接请求。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>客户机:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>1.向指定的服务器主机及端口发出连接请求。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>2.当服务器建立连接线路后与服务器进行通信。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>3.通信完毕后关闭连接线路。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>Linux的许多特性都非常有助于网络程序设计:首先Linux拥有POSIX.1标准库函数,socket()、bind()、listen()这几个库函数可以非常方便地实现服务器/客户机模型,有关这几个库函数的使用说明将在后边介绍。其次Linux的进程管理也非常符合服务器的工作原理,所谓进程就是程序在内存中运行时的状态,可以说进程是动态的程序。在运行着Linux操作系统的计算机中,每一个进程都有一个创建它的父进程,而且它也能创建多个子进程。在服务器端我们可以用父进程去监听客户机的连接请求,当有客户机的连接请求时父进程创建一个子进程去建立连接线路并与客户机通信,而它本身可继续监听其它客户机的连接请求,这样就可避免当有一个客户机与服务器建立连接后服务器就不能再与其它客户机通信的问题。Linux的另一个特性是它秉承了UNIX设备无关性这一优秀特征,即它通过文件描述符实现了统一的设备接口,磁盘、显示终端、音频设备、打印设备甚至网络通信都使用统一的I/O调用。这三个特性将使Linux下的网络程序设计变得易如反掌。上述三个特性的综合利用将是这篇文章所要讲述的真谛所在。下边的客户机/服务器实现过程可以说明一二,注意与上文所述步骤的不同。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>服务器:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>1.打开一个已知的监听端口。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>2.在监听端口上监听客户机的连接请求,当有一客户机请求连接时建立连接线路并返回通信文件描述符。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>4.父进程创建一子进程,父进程关闭通信文件描述符并继续监听端口上的客户机连接请求。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>3.子进程通过通信文件描述符与客户机进行通信,通信结束后终止子进程并关闭通信文件描述符。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>客户机:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>1.向指定的服务器主机及端口发出连接请求,请求成功将返回通信文件描述符。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>2.通过通信文件描述符与服务器进行通信。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>3.通信完毕后关闭通信文件描述符。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>Linux的以下几个库函数是网络程序设计的核心部分,它们分别是:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>(1)socket<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 socket(int domain,int 
            type,int protocol);<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>简要说明:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>此函数为通信创建一个端口,正常调用将返回一个文件描述符,错误调用将返回-1。domain参数有两种选择:AF_UNIX与AF_INET,其中AF_INET为Internet通信协议。type参数也有两种选择:SOCK_STREAM用于TCP,SOCK_DGRAM用于UDP。protocol参数通常为0。可通过下列代码为基于TCP协议的Internet通信建立套接口传输端口:<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>int sock;<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>perror("Could not create 
            socket");<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR><SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>(2)bind<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 bind(int s,const 
            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>bind英文含意是关联,捆绑。其目的就是把socket返回的套接口端口与网络上的物理位置相关联。<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>bind正常调用返回0,出错返回-1。此函数有三个参数:其中s为socket调用返回的文件描述符,*address设置了与网络上的物理位置相关的信息,它的类型是struct 
            sockaddr,但在Internet上它是struct sockaddr_in。在socket.h中struct 
            sockaddr_in定义为:<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>struct sockaddr_in{<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>short sin_family;<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>u_short sin_port;<SPAN 
            style="DISPLAY: none">it6Linux联盟</SPAN><BR>struct in_addr 
            sin_addr;<SPAN style="DISPLAY: none">it6Linux联盟</SPAN><BR>char 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -