版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux程序设计课程实验指导书LIAOCHENG UNIVERSITYLinux程序设计实验指导书聊城大学计算机学院2011年3月53目录Linux程序设计课程实验教学大纲1实验一Linux常用命令3基本信息3实验预习3实验过程3实验结果分析7实验二Linux环境下系统函数的使用8基本信息8实验预习8实验过程8实验三Linux下文件程序设计13基本信息13实验预习13实验过程13实验结果分析23实验四进程控制23基本信息23实验预习23实验过程23实验结果分析28实验五进程通信28基本信息28实验预习28实验过程28实验结果分析34实验六网络程序设计(1)35基本信息35实验预习35实验过程
2、35实验结果分析40实验七网络程序设计(2)40基本信息40实验预习41实验过程41实验结果分析46实验八综合实验46基本信息46实验预习47实验过程47实验结果分析52Linux程序设计课程实验教学大纲课程名称:Linux程序设计英文名称:Linux Programming设置形式:非独立设课课程模块:专业提高课实验课性质:专业实验课程编号:709647课程负责人:李俊青大纲主撰人:李俊青大纲审核人:左风朝一、学时、学分 课程总学时:64实验学时:16课程学分:2二、适用专业及年级软件工程、计算机科学与技术二、三年级三、课程目标与基本要求通过课程学习,掌握Linux系统安装、文件操作基本命令
3、、系统管理基本命令、服务器配置基本命令,系统学习Linux平台下C语言编程技术,主要包括:系统函数的使用、文件的基本操作、进程管理、守护进程、僵尸进程和进程间通信(包括:信号、管道、共享内存等)、网络编程、Linux下数据库的使用和管理编程技术。通过实验部分的学习,熟练掌握Linux系统平台编程技术和能力,独立开发小型综合系统能力。四、主要仪器设备 硬件:台式计算机、网络;软件:Linux操作系统。五、实验项目及教学安排序号实验项目名称实验基本方法和内容项目 学时项目类型每组人数教学 要求1Linux常用命令学习使用Linux基本文件操作命令、系统管理命令、服务器配置命令等2验证型1必修2Li
4、nux环境下系统函数的使用Linux环境下数学函数、字符函数、系统时间与日期函数、环境控制函数、内存分配函数、数据结构中常用函数的使用方法2验证型1必修3文件的操作Linux系统的文件属性、不带缓存的文件I/O操作、基于流的文件I/O操作、特殊文件的操作2验证型1必修4进程控制进程的基本概念及进程的结构、Linux环境下进程的相关函数的应用 守护进程的概念、启动和建立 进程控制程序的编写 2验证型1必修5进程通信进程通信中信号概念及信号处理 进程间的管道通信编程 进程间的内存共享编程2验证型1必修6网络程序设计(1)Socket的基本概念 如何实现面向连接的TCP编程 2验证型1必修7网络程序
5、设计(2)如何实现非连接的UDP编程 复杂网络程序的实现2验证型1必修8综合实验综合文件、进程、网络编程技术,编写网络聊天系统,系统具备文件共享、进程管理、网络通信、界面友好等特点2设计型1必修六、考核方式及成绩评定根据学生实验出勤情况、实验态度、实验报告成绩等评定实验成绩。 实验报告(含实验理论)占实验成绩的60%40%,实验技能(含实验态度)占实验成绩的40%60%。 各次实验成绩的平均值为最终实验成绩,占该课程考核总成绩的2030%。七、实验教科书、参考书1实验教科书自编实验指导书。 2实验参考书实验一Linux常用命令基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实
6、验项目:Linux常用命令项目类型:验证项目学时:2实验预习实验目的和要求:1、熟悉Linux常用命令;2、掌握Linux命令参数。实验条件:1、装有Linux操作系统的微型计算机;实验过程(1)指令名称:pwd pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。 (2)指令名称:cd cd命令不仅显示当前状态,还改变当前状态,它的用法跟dos下的cd命令基本一致。 cd .可进入上一层目录 cd -可进入上一个进入的目录 cd 可进入用户的home目录(3)指令名称:cp 使用方式: cp options source dest cp options source. dire
7、ctory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。 范例: 将档案 aaa 复制(已存在),并命名为 bbb : cp aaa bbb 将所有的C语言程式拷贝至 Finished 子目录中 : cp *.c Finished(4)名称:mv 使用方式:mv options source dest mv options source. directory 说明:将一个档案移至另一档案,或将数个档案移至另一目录。 参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。 范例: 将档案 aaa 更名为 bbb : mv aaa bbb 将所有的C语言程序移至 Finished
8、 子目录中 : mv -i *.c /Finished(5)指令名称 : chmod 使用方式 : chmod -cfvR -help -version mode file. 说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。 mode : 权限设定字串,格式如下 : ugoa.+-=rwxX.,.,其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可
9、写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。范例 :将档案 file1.txt 设为所有人皆可读取 : chmod ugo+r file1.txt 将档案 file1.txt 设为所有人皆可读取 : chmod a+r file1.txt 将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 : chmod ug+w,o-w file1.txt file2.txt 将 ex1.py 设定为只有该档案拥有者可以执行 : chmod u+x ex1.py 将目前目录下的所有档案与子目录皆设
10、为任何人可读取 : chmod -R a+r * 此外chmod也可以用数字来表示权限如 chmod 777 file 语法为:chmod abc file 其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。r=4,w=2,x=1 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6;若要r-x属性则4+1=7。范例: chmod a=rwx file 和 chmod 777 file 效果相同 chmod ug=rwx,o=x file 和 chmod 771 file 效果相同 若用chmod 4755 filename可使此程式具有root的权限(6)
11、指令名称 : ls 使用方式 : ls -alrtAFR name. 说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。 范例: 列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 : ls -ltr s* 将 /bin 目录以下所有目录及档案详细资料列出 : ls -lR /bin 列出目前工作目录下所有档案及目录;目录于名称后加 /, 可执行档于名称后加 * : ls -AF (7)指令名称:rm 使用方式:rm options name. 说明:删除档案及目录。 范例:删除所有C语言程式档;删除前逐一询问确认 : rm -i *.c 将 Finished
12、 子目录及子目录中所有档案删除 : rm -r Finished (8)指令名称:rmdir 使用方式: rmdir -p dirName 说明: 删除空的目录。 参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。 范例: 将工作目录下,名为 AAA 的子目录删除 : rmdir AAA 在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。 rmdir -p BBB/Test (9)指令名称:touch 使用方式: touch -acfm -r reference-file -file=refer
13、ence-file -t MMDDhhmmCCYY.ss -d time -date=time -time=atime,access,use,mtime,modify-no-create -help -version file1 file2 . 说明:touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。范例: 最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。touch file touch file1 file2 将 file 的时间记录改为 5 月 6 日 18 点 3 分,公元两千年。时间的格式可以参考 date 指令,至少需输
14、入 MMDDHHmm ,就是月日时与分。 touch -c -t 05061803 file touch -c -t 050618032000 file 将 file 的时间记录改变成与 referencefile 一样。 touch -r referencefile file 将 file 的时间记录改成 5 月 6 日 18 点 3 分,公元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。 touch -d 6:03pm file touch -d 05/06/2000 file touch -d 6:03pm 05/06/200
15、0 file (10)指令名称:gzip 说明:gzip命令用于压缩文件。 参数 : -d 将压缩文件解压范例:如果要将ye.txt文件压缩,可用如下命令: gzip ye.txt 这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。 解压缩文件可用gzip -d命令实现: gzip -d ye.txt.gz 这样就可以解压缩文件并删除gz扩展名。(11)指令名称:tar 说明:tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设
16、备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。范例:可用如下方法建立tar档案: tar cvf 例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令: tar cvf ye.tar *.* 要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令: tar tvf ye.tar 要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可用如下命令: tar xvf ye.tar新版的tar可以直接访问和建立gzip压缩的t
17、ar档案,只要在tar命令中加上z 选项就可以了。例如: 生成压缩档案ye.tar.gz :tar czvf ye.tar *.txt 显示压缩档案ye.tar.gz的内容:tar tzvf ye.tar *.txt 取出压缩档案ye.tar.gz的内容:tar xzvf ye.tar *.txt (12)指令名称:mail 使用方式:mail -iInv -s subject -c cc-addr -b bcc-addr user1 user 2 . 说明: mail 不仅只是一个指令, mail 还是一个电子邮件程序。参数:s 邮件标题 c 邮件地址 (2个地址以上用,一个地址不用加此参数
18、)范例: 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。mail 系统会提示输入“subject”将 mail.txt 的内容寄给 ,同时抄送给mail -s “标题” -c mail.txt 接收到的邮件都保存在目录 /var/spool/mail/用户名(13)指令名称 : wall 使用方式 :wall messa
19、ge 使用说明: wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。例子 :传讯息hi 给每一个使用者 : wall hi实验结果分析1、熟悉并记录命令执行结果。2、写出自己的心得体会。实验二Linux环境下系统函数的使用基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实验项目:Linux环境下系统函数使用项目类型:验证项目学时:2实验预习实验目的和要求:Linux环境下数学函数的使用方法Linux环境下字符函数的使用方法Linux环境下系统时间与日期函数的使用方法Linux环境下环境控制函数的使用方法Linux环境下内存分配函数的使用方法Linux环境下
20、数据结构中常用函数的使用方法实验条件:1、装有Linux操作系统的微型计算机;实验过程数学函数的使用系统时间与日期函数的使用环境控制函数内存分配函数实验三Linux下文件程序设计基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实验项目:Linux下文件程序设计项目类型:验证项目学时:2实验预习实验目的和要求:1、函数编写与函数参数的传递 2、多文件系统 3、多文件系统中使用4、make 使用autotools实验条件:1、装有Linux操作系统的微型计算机;实验过程步骤 2:分析程序、分割文件将此程序分割成下列2个Linux c程序。(1)2-3-main.c为主程序步骤 2
21、:用gcc编译程序rootlocalhost root#gcc 2-4-main.c 2-4-max.c o 2-4步骤 3:运行程序rootlocalhost root#./2-4 3. Make实验在一个Makefile文件中通常包含如下内容:需要由make工具创建的目标体(target),通常是目标文件或可执行文件。要创建的目标所依赖的文件。创建每个目标体时需要运行的命令。4. makefile变量的使用Linux文件类型Linux文件权限文件的创建文件的读写操作文件上锁流文件的打开和关闭文件的定位目录文件的操作链接文件的操作实验结果分析1、熟悉并记录命令执行结果。2、写出自己的心得体会
22、。实验四进程控制基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实验项目:进程控制项目类型:验证项目学时:2实验预习实验目的和要求:进程的基本概念及进程的结构Linux环境下进程的相关函数的应用守护进程的概念、启动和建立进程控制程序的编写实验条件:1、装有Linux操作系统的微型计算机;实验过程Liunx进程创建僵尸进程守护进程实验结果分析1、熟悉并记录程序执行结果。2、写出自己的心得体会。实验五进程通信基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实验项目:进程通信项目类型:验证项目学时:2实验预习实验目的和要求:进程通信中信号概念及信号处理进程间的管道
23、通信编程进程间的内存共享编程实验条件:1、装有Linux操作系统的微型计算机;实验过程信号操作的相关函数管道低级管道操作命名管道消息队列共享内存实验结果分析1、熟悉并记录程序执行结果。2、写出自己的心得体会。实验六网络程序设计(1)基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实验项目:网络程序设计(1)项目类型:验证项目学时:2实验预习实验目的和要求:Socket的基本概念如何实现面向连接的TCP编程如何实现非连接的TUDP编程复杂网络程序的实现实验条件:1、装有Linux操作系统的微型计算机;实验过程客户端#include#include #include #inclu
24、de #include #include #include #include #define SERVPORT 3333#define MAXDATASIZE 100 /*每次最大数据传输量 */int main(int argc, char *argv)int sockfd, recvbytes;char bufMAXDATASIZE;struct hostent *host;struct sockaddr_in serv_addr;if (argc h_addr);bzero(&(serv_addr.sin_zero),8);if (connect(sockfd, (struct sock
25、addr *)&serv_addr, sizeof(struct sockaddr) = -1) perror(connect error!);exit(1);if (recvbytes=recv(sockfd, buf, MAXDATASIZE, 0) =-1) perror(connect 出错!);exit(1);bufrecvbytes = 0;printf(收到: %s,buf);close(sockfd);服务器端#include#include#include#include #include #include #include #include #define SERVPORT
26、 3333 /*服务器监听端口号 */#define BACKLOG 10 /* 最大同时连接请求数 */int main()int sockfd,client_fd; /*sock_fd:监听socket;client_fd:数据传输socket */struct sockaddr_in my_addr; /* 本机地址信息 */struct sockaddr_in remote_addr; /* 客户端地址信息 */int sin_size;if (sockfd = socket(AF_INET, SOCK_STREAM, 0) = -1)perror(socket 创建失败!); exi
27、t(1);my_addr.sin_family=AF_INET;my_addr.sin_port=htons(SERVPORT);/* htons()把16位值从主机字节序转换成网络字节序*/my_addr.sin_addr.s_addr = INADDR_ANY;bzero(&(my_addr.sin_zero),8); /*保持与struct sockaddr同样大小 */if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr) = -1)perror(bind 出错!);exit(1);if (listen
28、(sockfd, BACKLOG) = -1) perror(listen 出错!);exit(1);while(1) sin_size = sizeof(struct sockaddr_in);if (client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size) = -1) perror(accept error);continue;printf(收到一个连接来自: %sn, inet_ntoa(remote_addr.sin_addr);if (!fork() /* 子进程代码段 */if (send(clie
29、nt_fd, 连接上了 n, 26, 0) = -1)perror(send 出错!);close(client_fd);exit(0);close(client_fd);读取文件内容通信程序客户端#include#include#include#include#include#include#include#include#includeint port=8888;int main()int sockfd;int i=0;int z;char buf80,str180;struct sockaddr_in adr_srvr;FILE *fp;printf(打开文件.n);/*以只读的方式打开
30、liu文件*/fp=fopen(liu,r);if(fp=NULL)perror(打开文件失败);exit(1);printf(连接服务端.n);/* 建立IP地址 */adr_srvr.sin_family=AF_INET;adr_srvr.sin_port=htons(port);adr_srvr.sin_addr.s_addr = htonl(INADDR_ANY);bzero(&(adr_srvr.sin_zero),8);sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd=-1)perror(socket 出错);exit(1);printf(
31、发送文件 .n);/* 读取三行数据,传给udpserver*/for(i=0;i3;i+)fgets(str1,80,fp);printf(%d:%s,i,str1);sprintf(buf,%d:%s,i,str1);z=sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_srvr,sizeof(adr_srvr);if(z0)perror(recvfrom 出错);exit(1);printf(发送.n);sprintf(buf,stopn);z=sendto(sockfd,buf,sizeof(buf),0,(struct s
32、ockaddr *)&adr_srvr,sizeof(adr_srvr);if(z0)perror(sendto 出错);exit(1);fclose(fp);close(sockfd);exit(0);服务器端#include#include#include#include#include#include#include#include#includeint port=8888;int main()int sockfd;int len;int z;char buf256;struct sockaddr_in adr_inet;struct sockaddr_in adr_clnt;print
33、f(等待客户端.n);/* 建立IP地址 */adr_inet.sin_family=AF_INET;adr_inet.sin_port=htons(port);adr_inet.sin_addr.s_addr =htonl(INADDR_ANY);bzero(&(adr_inet.sin_zero),8);len=sizeof(adr_clnt);/* 建立socket */sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd=-1)perror(socket 出错);exit(1);/* 绑定socket */z=bind(sockfd,(struct
34、 sockaddr *)&adr_inet,sizeof(adr_inet);if(z=-1)perror(bind 出错);exit(1);while(1)/* 接受传来的信息 */z=recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_clnt,&len);if(z0)perror(recvfrom 出错);exit(1);bufz=0;printf(接收:%s,buf);/* 收到stop字符串,终止连接*/if(strncmp(buf,stop,4)=0)printf(结束.n);break;close(sockfd);e
35、xit(0);实验结果分析1、熟悉并记录程序执行结果。2、写出自己的心得体会。实验七网络程序设计(2)基本信息实验课程:Linux程序设计 设课形式:非独立课程学分:2实验项目:网络程序设计(2)项目类型:验证项目学时:2实验预习实验目的和要求:Socket的基本概念如何实现面向连接的TCP编程如何实现非连接的TUDP编程复杂网络程序的实现网络程序高级编程技术实验条件:1、装有Linux操作系统的微型计算机;实验过程*客户端#include #include #include #include #include #include #include #include #include #incl
36、ude #define SERVPORT 4444/*服务器监听端口号*/#define MAXDATASIZE 256 /*最大同时连接请求数*/#define STDIN 0/*标准输入文件描述符*/int main(void)int sockfd;/*套接字描述符*/int recvbytes;char bufMAXDATASIZE;/*用于处理输入的缓冲区*/char *str;char nameMAXDATASIZE;/*定义用户名*/char send_strMAXDATASIZE;/*最多发出的字符不能超过MAXDATASIZE*/struct sockaddr_in serv_
37、addr;/*Internet套接字地址结构*/fd_set rfd_set, wfd_set, efd_set;/*被select()监视的读、写、异常处理的文件描述符集合*/struct timeval timeout;/*本次select的超时结束时间*/int ret;/*与server连接的结果*/if (sockfd = socket(AF_INET, SOCK_STREAM, 0) = -1) /*错误检测*/perror(socket);exit(1);/* 填充 sockaddr结构 */bzero(&serv_addr, sizeof(struct sockaddr_in)
38、;serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(SERVPORT);inet_aton(, &serv_addr.sin_addr);/*serv_addr.sin_addr.s_addr=inet_addr(01);*/if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr) = -1) /*错误检测*/perror(connect);exit(1);fcntl(sockfd, F_SETFD, O_
39、NONBLOCK);printf(要聊天首先输入你的名字:);scanf(%s,name);namestrlen(name) = 0;printf(%s: ,name);fflush(stdout);send(sockfd, name, strlen(name), 0);/*发送用户名到sockfd*/while (1) FD_ZERO(&rfd_set);/*将select()监视的读的文件描述符集合清除*/FD_ZERO(&wfd_set);/*将select()监视的写的文件描述符集合清除*/FD_ZERO(&efd_set);/*将select()监视的异常的文件描述符集合清除*/FD
40、_SET(STDIN, &rfd_set);/*将标准输入文件描述符加到seletct()监视的读的文件描述符集合中*/FD_SET(sockfd, &rfd_set);/*将新建的描述符加到seletct()监视的读的文件描述符集合中*/FD_SET(sockfd, &efd_set);/*将新建的描述符加到seletct()监视的异常的文件描述符集合中*/timeout.tv_sec = 10;/*select在被监视窗口等待的秒数*/timeout.tv_usec = 0;/*select在被监视窗口等待的微秒数*/ret = select(sockfd + 1, &rfd_set, &
41、wfd_set, &efd_set, &timeout);if (ret = 0) continue;if (ret 0) perror(select error: );exit(-1);/*判断是否已将标准输入文件描述符加到seletct()监视的读的文件描述符集合中*/if (FD_ISSET(STDIN, &rfd_set)fgets(send_str, 256, stdin);send_strstrlen(send_str)-1 = 0;if (strncmp(quit, send_str, 4) = 0) /*退出程序*/close(sockfd);exit(0);send(sock
42、fd, send_str, strlen(send_str), 0);/*判断是否已将新建的描述符加到seletct()监视的读的文件描述符集合中*/if (FD_ISSET(sockfd, &rfd_set) recvbytes=recv(sockfd, buf, MAXDATASIZE, 0);if (recvbytes = 0) close(sockfd);exit(0);bufrecvbytes = 0;printf(Server: %sn, buf);printf(%s: ,name);fflush(stdout);/*判断是否已将新建的描述符加到seletct()监视的异常的文件描
43、述符集合中*/if (FD_ISSET(sockfd, &efd_set)close(sockfd);exit(0);*服务器端#include #include #include #include #include #include #include #include #include #include #define MAXDATASIZE 256#define SERVPORT 4444/*服务器监听端口号*/#define BACKLOG 1 /*最大同时连接请求数*/#define STDIN 0 /*标准输入文件描述符*/int main(void)FILE *fp;/*定义文件类
44、型指针fp*/int sockfd,client_fd;/*监听socket.sock_fd,数据传输socket.new_fd*/int sin_size;struct sockaddr_in my_addr, remote_addr;/*本机地址信息,客户地址信息*/char buf256;/*用于聊天的缓冲区*/char buff256;/*用于输入用户名的缓冲区*/char send_str256;/*最多发出的字符不能超过256*/int recvbytes;fd_set rfd_set, wfd_set, efd_set;/*被select()监视的读、写、异常处理的文件描述符集合
45、*/struct timeval timeout;/*本次select的超时结束时间*/int ret;/*与client连接的结果*/if (sockfd = socket(AF_INET, SOCK_STREAM, 0) = -1) /*错误检测*/perror(socket);exit(1);/* 端填充 sockaddr结构 */bzero(&my_addr, sizeof(struct sockaddr_in);my_addr.sin_family=AF_INET;/*地址族*/my_addr.sin_port=htons(SERVPORT);/*端口号为4444*/inet_ato
46、n(, &my_addr.sin_addr);if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr) = -1) /*错误检测*/perror(bind);exit(1);if (listen(sockfd, BACKLOG) = -1) /*错误检测*/perror(listen);exit(1);sin_size = sizeof(struct sockaddr_in);if (client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size) = -1) /*错误检测*/perror(accept);exit(1);fcntl(client_fd, F_SETFD, O_NONBLOCK);/* 服务器设为非阻塞*/recvbytes=recv(client_fd,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电影行业安全生产工作总结
- 传统制造业技术职位展望
- 二零二五年度航空航天材料试验委托协议3篇
- 二零二五年度房屋收购合同环保验收与评估范本3篇
- 二零二五版养老院专业保洁及消毒服务合同2篇
- 二零二五版个人二手房购房合同与产权过户指导书
- 航空行业助理的职位介绍
- 汽车行业财务预测分析工作总结
- 二零二五年度产品责任纠纷民事答辩状范文3篇
- 二零二五年度木材市场树木买卖协议3篇
- 第八章《运动和力》达标测试卷(含答案)2024-2025学年度人教版物理八年级下册
- 民办幼儿园务工作计划
- 2025年华侨港澳台生联招考试高考地理试卷试题(含答案详解)
- 临床导尿术流程图
- 中国革命战争的战略问题(全文)
- 《数学归纳法在中学解题中的应用研究》9000字(论文)
- 《阻燃材料与技术》课件全套 颜龙 第1讲 绪论 -第11讲 阻燃性能测试方法及分析技术
- 危险性化合物的微生物降解-中国石油大学环境生物工程
- (正式版)JBT 5300-2024 工业用阀门材料 选用指南
- 虚位移原理PPT
- 中石化ERP系统操作手册
评论
0/150
提交评论