- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.3.5 客户端读取和显示字符串 客户端从标准输入读取数据到缓冲区buffer中,发送到服务器端。然后从服务器端读取服务器的响应,将数据发送到标准输出。 void process_conn_client(int s) { ssize_t size = 0; char buffer[1024]; for(;;){ size = read(0, buffer, 1024); if(size 0){ write(s, buffer, size); size = read(s, buffer, 1024); write(1, buffer, size); } } } 2.3.6 编译运行程序 服务器的网络程序保存为文件tcp_server.c、客户端的网络程序保存为tcp_client.c、客户端和服务器的字符串处理保存为文件tcp_proccess.c,建立如下的Makefile文件: all:client server client:tcp_process.o tcp_client.o gcc -o client tcp_process.o tcp_client.o server:tcp_process.o tcp_server.o gcc -o server tcp_process.o tcp_server.o clean: rm -f client server *.o 2.4 截取信号的例子 在Linux操作系统中当某些状况发送变化时,系统会向相关的进程发送信号。信号的处理方式系统会先调用进程中注册的处理函数,然后调用系统的默认地响应方式,包括终止进程,因此在系统结束进程前注册信号处理函数进行一些处理是一个完善程序的必须条件。 2.4.1 信号处理 信号是发生某件事情的时候的一个通知,有时候也将其称为软中断。信号将事件发送给相关的进程,相关进程可以对信号进行捕捉并进行处理。信号的捕捉由系统自动完成,信号的处理函数的注册通过函数signal()完成。函数signal()的原型为: #include signal.h typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 7.4.2 信号SIGPIPE 当正在写入套接字的时候,当读取端已经关闭的时候,可以得到一个SIGPIPE信号。信号SIGPIPE会终止当前进程,因为信号系统在调用系统默认处理方式的之前会先调用用户注册的函数,所以可以通过注册SIGPIPE信号的处理函数来获取这个信号,并进行相应的处理。 7.4.3 信号SIGINT 信号SIGINT通常是由CTRL+C终止进程造成的,与CTRL+C一致kill命令默认发送SIGINT信号,用于终止进程运行向,当前活动的进程发送这个信号。 void sig_int(int sign) { printf(Catch a SIGINT signal\n); } signal(SIGINT, sig_pipe); 7.5 小结 本章介绍了TCP网络编程的基础知识,对函数socket()、bind()、listen()、accept()、connect()、close()进行了介绍。服务器端和客户端的程序中用到不同的函数,并且二者之间的流程存在差别。其中服务器端的程序设计需要依次调用socket()、bind()、listen()、accept()、close()函数,客户端程序设计需要依次调用socket()、connect()、close()等函数。 通过一个例子对服务器和客户端的流程和函数的使用进行了解释。最后提及网络编程中的信号处理,特别是由于连接关闭造成的SIGPIPE信号和由于要终止进程而造成的SIGINT信号。截取退出信号进行处理是程序稳定性的基本要求。 第2章 TCP网络编程基础 TCP协议是TCP/IP协议中很重要的一个协议,它由于传输的稳定性,在很多程序中都在使用,例如HTTP、FTP等协议都是在TCP的基础上进行构建的。本章介绍TCP套接字的编程基础知识,主要包含如下内容: 套接字编程的基础知识的部分,介绍套接字编程中经常使用的套接字地址结构,对内核和应用层之间的内存数据传递方式进行了简单的介绍。 TCP网络编程的流程部分,简单介绍TCP套接字服务器、客户端的编程框架,对函数socket()、bind()、listen()、accept()、connect()、close()函数进行了介绍,并提及如何使用read()和write()函数进行数据的读
您可能关注的文档
- (精)名著导读《堂吉诃德》.ppt
- (精)南京市江东门小学茶花里分校.ppt
- (精)你凭什么上北大.ppt
- (精)农村 初中语文教师发展的现实途径(黑龙江).ppt
- (精)农业科技论文写作(第二章)-2012.ppt
- (精)农远卫星资源在农村中小学数学 英语教学中应用的方法与案例研究.ppt
- (精)努力践行职业道德.ppt
- (精)品德9年级第一单元.ppt
- (精)企业会计档案管理.ppt
- (精)企业会计准则——合并财务报表(必选).ppt
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
文档评论(0)