简单的C/S socket编程-fork子进程方式处理任务
来源:互联网 发布:saas数据库设计 编辑:程序博客网 时间:2024/05/21 07:07
Client:
#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <sys/types.h>#include <sys/socket.h>#include <errno.h>#include <string.h>#define SRV_PORT 9527#define MAX_BUF_LEN 1024void do_job(int);int main(int argc, char **argv){int listenfd, connfd; pid_t child_pid;struct sockaddr_in srv_addr, cli_addr;int cli_len;printf("Hello, I'm client!\r\n");listenfd = socket(AF_INET, SOCK_STREAM, 0);if (listenfd == 0){printf("socket fail, err(%s)\n", strerror(errno));return -1;}bzero(&srv_addr, sizeof(struct sockaddr_in));srv_addr.sin_family = AF_INET;srv_addr.sin_port = htons(SRV_PORT);inet_pton(AF_INET, "135.2.51.5", &srv_addr.sin_addr);connect(listenfd, (struct sockaddr *)&srv_addr, sizeof(srv_addr));do_job(listenfd);return 0;}void do_job(int fd){char *buf = "I'm client";char buf2[MAX_BUF_LEN];ssize_t len;bzero(buf2, MAX_BUF_LEN);if (0 > write(fd, "I'm client", strlen(buf)+1)){printf("write failed\n");return;}if (-1 == read(fd, buf2, MAX_BUF_LEN)){printf("read failed]\n");return;}close(fd);printf("read from server:%s",buf2);}
Server:
#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <sys/types.h>#include <sys/socket.h>#include <errno.h>#include <string.h>#define SRV_PORT 9527#define LISTEN_LEN 5#define MAX_BUF_LEN 1024void do_job(int);int main(int argc, char **argv){int listenfd, connfd; pid_t child_pid;struct sockaddr_in srv_addr, cli_addr;int cli_len;printf("Hello, I'm server!\r\n");listenfd = socket(AF_INET, SOCK_STREAM, 0);if (listenfd == 0){printf("socket fail, err(%s)\n", strerror(errno));return -1;}bzero(&srv_addr, sizeof(struct sockaddr_in));srv_addr.sin_family = AF_INET;srv_addr.sin_addr.s_addr = htonl(INADDR_ANY);srv_addr.sin_port = htons(SRV_PORT);if (0 != bind(listenfd, (struct sockaddr*)&srv_addr, sizeof(srv_addr))){printf("bind fail, err(%s)\n", strerror(errno));close(listenfd);return -1;}if (0 != listen(listenfd, LISTEN_LEN)){printf("listen fail, err(%s)\n", strerror(errno));close(listenfd);return -1;}while (1){connfd = accept(listenfd, (struct sockaddr*)&cli_addr, &cli_len);if (-1 == connfd){printf("accept fail, err(%s)\n", strerror(errno));close(listenfd);return -1;}if ((child_pid = fork()) == 0){close(listenfd);do_job(connfd);//close(connfd);exit(0);}close(connfd);}return 0;}void do_job(int fd){char buf[MAX_BUF_LEN];ssize_t len;bzero(buf, MAX_BUF_LEN);len = read(fd, buf, MAX_BUF_LEN);if (len < 0){printf("read failed\n");return;}printf("recv from client:%s\n", buf);if (-1 == write(fd, "hello, welcome to my server \r\n", 32)){printf("write failed]\n");return;}}
0 0
- 简单的C/S socket编程-fork子进程方式处理任务
- fork - 子进程在复制父进程的信号处理方式
- 多线程编程-通过fork方式创建任务进程
- 【C/C++】多进程:子进程的创建fork()
- socket编程---简单的C/S之间的通信
- socket编程(一)最简单的c/s模式
- java 关于socket编程实现简单的c/s连接
- APUE学习之----socket编程实现简单的C/S
- Android/Socket编程 简单C/S模式
- 简单的C#Socket编程
- TCP编程中,在server端调用fork创建子进程,在子进程中接收/处理外部数据。
- 最简单的socket c/s模型
- C/S最简单的socket通信
- fork进程的一些处理,
- 子进程在复制父进程的信号处理方式
- 子进程在复制父进程的信号处理方式
- Java Socket编程之简单的C/S一对一的实现
- linux系统编程 父进程和子进程fork
- 以互联网思维模式打破旧秩序
- 给技术人上的管理课:控制和计划
- java对象转json
- 三步搞定婚礼视频。
- 数据存储-SQLiteOpenHelper(SQLite数据库增删改查)
- 简单的C/S socket编程-fork子进程方式处理任务
- select,xpool,cpool,epool
- Java clone() 浅克隆与深度克隆
- C、C++和VC++的区别
- “由于未能创建 Microsoft Visual C# 2008 编译器,因此未能打开项目 "xxx" ”的解决方法 .
- C#中SerialPort类中DataReceived事件GUI实时处理方法
- 原生AJAX写法
- 知识点查找索引
- C++的深拷贝与浅拷贝