随笔分类 - 网络编程
摘要:首先看一下man文档中这三个函数的定义: select函数: #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int select(int nfds, fd_set *readfds, fd_set *writefds
阅读全文
摘要:前文列表: 简单的回射程序 回射程序改进1 回射程序改进2——群发消息(fork)错误的尝试 目的: 设计一个C/S程序,客户端发送/接收消息,服务端将从客户端接收到的消息群发给其它已连接套接字,产生 类似群聊的效果 相对于之前的改进: 1.客户端可以在服务端终止后得到通知 2.客户端使用shutd
阅读全文
摘要:select函数 select()函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定时间后才唤醒它 select函数 #include <sys/select.h> #include <sys/time.h> // 返回值:若有就绪描述符,则返回就绪描述符数目
阅读全文
摘要:在回射程序的基础上,设计一个类似于群聊的应用 与改进1相比增加的设计: 1.将每个客户端发出的消息增加一个字符串,用于表示发送者的身份 2.服务端将收到的每个客户端消息转发给其他已连接的客户端套接字 改进1:https://www.cnblogs.com/lnlin/p/9568279.html 改
阅读全文
摘要:原回射程序 回射程序改良,将源main函数中的某些操作定义为单独的函数,使其便于修改 chat_cli.c 文件 fun_cli.c 文件 chat_serv.c 文件 fun_serv.c文件
阅读全文
摘要:在 <netinet/in.h> 头文件下有下列这些宏用于判断IPv6地址合法性 返回0代表true,返回非零值代表ipv6地址为非指定类型的的地址(false) int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *aptr);如果地址是未指定的IP
阅读全文
摘要:创建单个线程 #include <pthread.h> // 若成功返回0,出错返回正的Exxx值int pthread_create(pthread_t *tid, // 每个线程在进程中的线程ID const pthread_attr_t *attr, // 线程属性,默认为0 void * (
阅读全文
摘要:sctp_bindx函数:允许SCTP套接字捆绑一个特定地址子集 sctp_connectx函数:用于连接到一个多宿对端主机 sctp_getpaddrs函数:使用SCTP时它仅仅返回主目的地址,使用sctp_getpaddrs用于获取对端所有地址 sctp_freepaddrs函数:用于释放sct
阅读全文
摘要:回射程序:服务端将客户端发送的数据输出并返回给客户端 客户端 服务端 运行结果:
阅读全文
摘要:错误处理: 许多系统调用和函数在失败后,会在失败时设置外部变量errno的值来指明失败原因。许 多不同的函数库都把这个变量作为报告错误的标准方法。程序必须在函数报告出错后立刻 检查errno变量,因为它可能被下一个函数调用所覆盖,即使下一个函数本身没有出错, 也可能会覆盖这个变量。错误代码的取值和含
阅读全文
摘要:读函数read ssize_t read(int fd,void *buf,size_t nbyte) 作用:从文件描述符(fildes)相关联的文件里读入nbytes个字节的数据,并把它们放到数据区buf中。 read返回实际读入的字节数,这可能会小于请求的字节数,如果read调用返回0,表示未读
阅读全文
摘要:TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端必须准备好接受外来连接,这通常通过服务端调用 (socket、bind、listen) 这三步来完成,我们称之为被动打开(a),客户端通过调用 (connect) 发起主动打开。
阅读全文
摘要:基本TCP套接字编程 socket函数 这是一个进程在执行网络I/O之前必须调用的函数,用于指定期望的通信协议类型 connect函数 TCP客户端用connect函数来建立与TCP服务器的连接 bind函数 bind函数用于将一个本地协议地址赋予一个套接字 listen函数 listen函数仅由T
阅读全文
摘要:IPv4套接字地址结构:sockaddr_in 通用套接字地址结构:sockaddr 用于声明将套接字地址结构作为一个参数传递进任何套接字函数时所传递的指针的数据类型对于开发者而言,这些通用套接字地址结构的唯一用途是:对指向特定于协议的套接字地址结构的指针执行类型强制转换 IPv6套接字地址结构:s
阅读全文
摘要:#include "net.h" #include // syslog() int daemon_proc; static void err_doit(int errnoflag, int level, const char *fmt, va_list ap) { int errno_save, n; char buf[MAXLINE + 1]; err...
阅读全文

浙公网安备 33010602011771号