
TCP/IP网络编程
文章平均质量分 68
OFShare
这个作者很懒,什么都没留下…
展开
-
实现并发多进程服务器端
服务器端源码:#include #include #include #include #include #include #include #include #define BUF_SIZE 30void error_handling(char *msg){ fputs(msg,stderr); exit(1);}void read_childproc(int s原创 2017-05-23 13:22:33 · 418 阅读 · 0 评论 -
线程的创建及运行
#include #include #include void* thread_main(void*);int main(){ pthread_t t_id; int thread_param=5; if(pthread_create(&t_id,NULL,thread_main,&thread_param)!=0) { puts("pthread_create() e原创 2017-05-30 22:16:39 · 327 阅读 · 0 评论 -
套接字与文件描述符
文件描述符:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。习惯上,标准输入(standard input)的文件描述转载 2017-05-17 22:04:59 · 2007 阅读 · 0 评论 -
实现I/0复用服务器端(select函数)
//服务器端源码#include #include #include #include #include #include #include #include #define BUF_SIZE 100void error_handling(const char *msg){ printf(msg,stderr); exit(1);}int main(int ar原创 2017-05-27 21:01:38 · 352 阅读 · 0 评论 -
readv&writev函数
#include #include #define BUF_SIZE 100int main(){ struct iovec vec[2]; char buf1[BUF_SIZE]={0,}; // char buf2[BUF_SIZE]={0,}; // int str_len; vec[0].iov_base=buf1; vec[0].iov_len=5; vec[1原创 2017-05-27 20:54:05 · 636 阅读 · 0 评论 -
利用信号处理技术消灭僵尸进程
#include #include #include #include #include void read_childproc(int sig){ int status; pid_t id=waitpid(-1,&status,WNOHANG); //调用waitpid()函数销毁子进程 if(WIFEXITED(status)) { printf("Removed原创 2017-05-17 21:06:56 · 707 阅读 · 1 评论 -
信号处理signal与sigaction函数
//void (*signal(int signo,void (*func)(int)))(int) signal函数的原型#include #include #include void timeout(int sig) //定义信号处理函数(信号处理器){ if(sig==SIGALRM) puts("Time out!"); alarm(2); //2秒过后将产生原创 2017-05-17 20:45:49 · 505 阅读 · 0 评论 -
创建进程,销毁僵尸进程
//创建进程#include #include //父子进程共享同一段代码,但在不同的内存结构中int gval=10;int main(int argc,char *argv[]){ pid_t pid; int lval=20; gval++,lval+=5; pid=fork(); //调用fork函数床创建进程,父进程返回子进程的ID 子进程返回0 if(pid原创 2017-05-16 15:45:01 · 535 阅读 · 0 评论 -
TCP/IP网络编程_hello world服务器端与客户端
//服务器端代码#include #include #include #include #include #include void error_handling(char *message);int main(int argc,char *argv[]){ int serv_sock; int clnt_sock; struct sockaddr_in ser原创 2017-05-09 23:08:34 · 621 阅读 · 0 评论 -
TCP/IP网络编程_echo回声服务器端与/客户端
//自己在写的时候碰到的坑1.注意服务器端serv_adr.sin_addr.s_addr=htonl(INADDR_ANY)写成inet_addr(INADDR_ANY)就是错的2.注意客户端serv_adr.sin_addr.s_addr=inet_addr(argv[1]);写成htonl(argv[1])就是错的3.注意while((str_len=read(clnt_sock,m原创 2017-05-13 08:48:49 · 2721 阅读 · 0 评论 -
TCP/IP网络编程_计算器服务器端客户端
//服务器端代码:#include #include #include #include #include #include void error_handling(const char *msg){ fputs(msg,stderr); exit(1);}int calc(int n,int *digs,char op){ int res1=0; int res原创 2017-05-15 11:59:29 · 1007 阅读 · 0 评论 -
基于UDP的回声服务器/客户端
//服务器端代码:#include #include #include #include #include #include #define MAXN 1024void error_handling(const char *str){ fputs(str,stderr); fputc('\n',stderr); exit(1);}int main(int argc,原创 2017-05-15 15:38:19 · 794 阅读 · 0 评论 -
通过管道实现进程间通信
#include #include #define BUF_SIZE 30int main(){ int fds[2]; char str1[]="Who are you?"; char str2[]="Thank you for your message"; char buf[BUF_SIZE]; pid_t pid; pipe(fds); //fds数组中保存用于I/原创 2017-05-22 15:06:28 · 457 阅读 · 0 评论