TCP/IP网络编程
telnetipc
这个作者很懒,什么都没留下…
展开
-
TCP/IP网络编程——TCP通信
hello_server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>void error_handling(cha...原创 2018-05-25 16:34:45 · 445 阅读 · 0 评论 -
TCP/IP网络编程——理解线程(临界区、同步)
每个进程的内存空间都有保存全局变量的“数据区”,动态分配内存空间的堆,函数运行时使用的栈。进程的切换需要上下文切换,开销巨大。线程共享数据区和堆,只需分离栈区域,上下文切换时开销较小。下面是多线程求1-10的和的程序:thread.c//多进程模型缺点:创建进程过程会带来一定开销(频繁的上下文切换);数据交换需要IPC技术//上下文切换:如果运行进程A后要切换到运行进程B,就应将A的相关信息移出...原创 2018-05-31 15:02:43 · 483 阅读 · 0 评论 -
TCP/IP网络编程——优于select的epoll
echo_epollserv.c//使用epoll函数实现IO复用回声服务器//epoll函数有以下优点://1.无需编写针对所有描述符的循环语句//2.调用epoll_wait函数时无需每次传递监视对象信息//epoll_create:创建保存epoll文件描述符的空间//epoll_ctl:向空间注册并注销文件描述符//epoll_wait:等待文件描述符发生变化//epoll默...原创 2018-05-30 12:28:01 · 280 阅读 · 0 评论 -
TCP/IP网络编程——基于标准IO的回声客户端
echo_stdserv.c//套接字的标准IO:标准IO函数有自己的缓冲,可以提高传输性能//而系统函数read和write未提供缓冲,传输相对较慢#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/in...原创 2018-05-30 12:25:19 · 284 阅读 · 1 评论 -
TCP/IP网络编程——多播与广播
下面程序实现了多播发送与接收:news_sender.c//多播:向多播组中多个主机传递数据,多播组是D类IP地址//多播方式是基于UDP完成的//TTL:生存时间(数据包传递距离)。每经过一个路由器就减1,TTL变0时,数据包无法传递,只能销毁。//广播:向同一网络中的主机传送数据。//广播设置方法://int bcast=1;//setsockopt(sock, SOL_SOCKE...原创 2018-05-29 17:45:46 · 2539 阅读 · 0 评论 -
TCP/IP网络编程——IO复用
引入复用技术,可以减少进程数,无论连接多少客户端,提供服务的进程只有一个。select函数可以实现IO复用,它可以将多个文件描述符集中到一起统一监视:是否存在套接字接收数据?无需阻塞传输数据的套接字有哪些?哪些套接字发生了异常?下面是具体用例://使用select函数完成IO复用#include <stdio.h>#include <unistd.h>#include...原创 2018-05-29 17:43:29 · 1057 阅读 · 0 评论 -
TCP/IP网络编程——进程间通信IPC
下面以管道pipe完成进程间的通信:开辟进程将回声客户端传输的字符串按序保存到文件中,这里读字符串信息用到了管道通信。echo_storeserv.c//将回声客户端传输的字符串按序保存到文件,利用到了进程间通信(管道)//int pipe(int fds[2]);//fds[0]:接收数据文件描述符,管道出口。fds[1]:发送数据文件描述符,管道入口//write向管道写入数据,read...原创 2018-05-29 17:37:44 · 1063 阅读 · 0 评论 -
TCP/IP网络编程——多进程回声服务器实现
依然是回声服务器,这次用到了多进程,可以同时应对多个客户端。echo_mpserv.c//基于多进程的并发服务器实现//注:子进程会复制父进程拥有的所有资源#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa...原创 2018-05-29 17:33:37 · 490 阅读 · 0 评论 -
TCP/IP网络编程——多进程与僵尸进程
进程:占用内存空间的正在运行的程序。下面通过这一段程序理解多进程:fork.c//父进程:fork返回子进程ID,子进程:返回0//最终运行结果:父进程:gval=11,lval=26;//子进程:gval=12,lval=25;#include <stdio.h>#include <unistd.h>#include <boost/graph/graph_...原创 2018-05-29 17:28:57 · 773 阅读 · 0 评论 -
TCP/IP网络编程——基于TCP的半关闭(完成文件传输)
半关闭:只断开一个流file_client.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#define BUF_SI...原创 2018-05-25 16:51:40 · 694 阅读 · 0 评论 -
TCP/IP网络编程——UDP迭代回声服务器/客户端
uecho_client.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#define BUF_SIZE 30vo...原创 2018-05-25 16:48:51 · 455 阅读 · 0 评论 -
TCP/IP网络编程——计算器服务器/客户端
op_server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#define BUF_SIZE 1024#def...原创 2018-05-25 16:43:54 · 1028 阅读 · 1 评论 -
TCP/IP网络编程——迭代回声服务器/客户端
echo_server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>void error_handling(char...原创 2018-05-25 16:40:55 · 430 阅读 · 0 评论 -
TCP/IP网络编程——多线程并发服务器的实现(构建多人聊天室)
话不多说,实现了多个客户端可以交换信息的简单聊天程序,程序如下:chat_server.c//多线程并发服务器端//访问全局变量clnt_cnt和clnt_socks的代码将构成临界区#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#in...原创 2018-05-31 15:14:53 · 5340 阅读 · 2 评论