上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: 尽管我们的TCP程序例子很小 2个main函数加上str_echo、str_cli、readline、writen 然而对于我们弄清客户和服务器如何启动,如何终止,更为重要的是当发生某些错误时将会发生什么 (例如:客户主机崩溃,客户进程崩溃,网页连接断开,等等) 只有搞清楚这些边界条件以及它们与TC 阅读全文
posted @ 2016-04-04 20:24 ailx10 阅读(210) 评论(0) 推荐(0)
摘要: str_cli函数完成客户处理循环: 从标准输入读入一行文本,写到服务器上,读回服务器对该行的回射,并把回射行写到标准输出上 读入一行,写到服务器 fgets读入一行文本,writen把该行发送给服务器 从服务器读入回射行,写到标准输出 readline从服务器读入回射行,fputs把它写到标准输出 阅读全文
posted @ 2016-04-04 19:16 ailx10 阅读(716) 评论(0) 推荐(0)
摘要: 创建套接字,装填网际网套接字地址结构 创建一个TCP套接字,用服务器的IP地址和端口号装填一个网际网套接字地址结构 我们可从命令行参数取得服务器的IP地址 从头文件unp.h取得服务器的众所周知端口号(SERV_PORT) 连接到服务器 connect建立与服务器的连接 str_cli函数完成剩余部 阅读全文
posted @ 2016-04-04 16:36 ailx10 阅读(274) 评论(0) 推荐(0)
摘要: str_echo函数执行处理每个客户的服务: 从客户读入数据,并把它们回射给客户 读入缓冲区并回射其中内容: read函数从套接字读入数据,writen函数把其中内容回射给客户 如果客户关闭连接,那么接收到客户的FIN将导致服务器子进程的read函数返回0,这又导致str_echo函数的返回,从而终 阅读全文
posted @ 2016-04-04 16:28 ailx10 阅读(856) 评论(0) 推荐(0)
摘要: TCP回射并发服务器 1.创建套接字,绑定服务器的众所周知端口 创建一个TCP套接字,在待绑定到该TCP套接字的网际网套接字地址结构中填入通配地址(INADDR_ANY) 和服务器的众所知周(SERV_PORT,在头文件中unp.h中其定义为9877) 绑定通配地址是在告知系统: 要是系统是多宿主机 阅读全文
posted @ 2016-04-04 16:20 ailx10 阅读(515) 评论(0) 推荐(0)
摘要: 一个回射服务器: 1)客户从标准输入读入一行文本,并写给服务器 2)服务器从网络输入读入这行文本,并回射给客户 3)客户从网络输入读入这行回射文本,并显示在标准输出上 回射输入行这样一个客户/服务器程序是一个尽管简单然而有效的网络程序例子 实现任何客户/服务器网络应用所需的所有基本步骤可通过本例子阐 阅读全文
posted @ 2016-04-03 22:17 ailx10 阅读(282) 评论(0) 推荐(0)
摘要: 这2个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址(getpeername) int getsockname(int sockfd, struct sockaddr* localaddr, socklen_t * addrlen); i 阅读全文
posted @ 2016-04-03 20:35 ailx10 阅读(897) 评论(0) 推荐(0)
摘要: int close(int sockfd); close一个TCP套接字的默认行为是把该套接字标记成已关闭,然后立即返回到调用进程, 该套接字描述符不能再由调用进程使用,也就是说它不能再作为read或write的第一个参数 并发服务器中父进程关闭已连接套接字只是导致相应描述符的引用数值减1,既然引用 阅读全文
posted @ 2016-04-03 20:09 ailx10 阅读(580) 评论(0) 推荐(0)
摘要: 当服务一个客户请求可能花费较长时间时,我们并不希望整个服务器被单个客户长期占用,而是希望同时服务多个客户 unix中编写并发服务器程序最简单的方法就是fork一个子进程来服务每个客户 典型的并发服务器程序轮廓 当一个连接i建立时,accpt返回,服务器接着调用fork,然后由子进程服务客户,父进程则 阅读全文
posted @ 2016-04-03 19:54 ailx10 阅读(242) 评论(0) 推荐(0)
摘要: fork函数调用一次,返回2次 它在调用进程中返回一次,返回值是新派生进程的进程ID号 在子进程又返回一次,返回值是0 因此,返回值本身告诉当前进程的子进程还是父进程 fork在子进程返回0而在父进程返回进程ID的原因在于: 任何子进程只有一个父进程,而子进程总是可以通过调用getppid取得父进程 阅读全文
posted @ 2016-04-03 17:15 ailx10 阅读(440) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页