网络程序设计试题A卷-2013(李金库)(2)

2019-03-28 16:18

int i;

act.sa_handler=sigchld_handler; act.sa_flags=0;

sigemptyset(&act.sa_mask);

if(sigaction(SIGCHLD,&act,NULL)<0){

cout<<\ exit(1); }

for(i=0;i<5;i++){

if(fork()==0){ cout<<\ exit(0); } }

for(;;){}

return 0;

}

void sigchld_handler(int sig) { pid_t pid; int stat; for(;(pid=waitpid(-1,&stat,WNOHANG))>0;) {

cout<<\

} }

本程序通过循环过程生成了五个子进程,子进程将打印出他们自己的进程号,然后以status=0退出。由于本程序设置了信号SIGCHLD的处理,在处理函数sigchld_handler中,父进程接收到子进程发来的SIGCHLD信号时将打印出子进程的进程号以及退出状态。

6

六、 使用UDP套接字编程(13分)

客户机发送20个整数给服务器,服务器在其中找到这些整数的最大值,返回给客户机。 不考UDP 七、 编写一个服务器程序,使其能够实现TCP并发服务,并且打印出每个

连接成功的客户端的IP地址及其端口号(10分) #include ...

#define SERVPORT 3333 /* 服务器监听端口号 */ #define BACKLOG 10 /* 最大同时连接请求数 */

int main(void) {

int sin_size;

int sockfd, new_fd;

struct sockaddr_in server_addr; struct sockaddr_in client_addr;

//建立套接字

sockfd=socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) {

perror(\ exit(1); }

//填充地址

bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(SERVPORT);

server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

//绑定

if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) {

perror(\!\exit(1);

7

}

//监听

if (listen(sockfd, BACKLOG) == -1)

{

perror(\!\ exit(1); }

while(1) {

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct *)&client_addr, &sin_size)) == -1) {

perror(\ continue; }

printf(\addr:%s inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

if (!fork()) {/* 子进程代码段 */

/* do something */ /* ............ */ /* do something */

close(new_fd); exit(0); }

close(new_fd); }

return 0;

}

8

sockaddr %d\\n\


网络程序设计试题A卷-2013(李金库)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018大学生金工实习报告4篇

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: