socket函数(安装电话机)头文件:#include<sys/socket.h> int socket(int family,  int type, int protocol); //返回套接字描述符sockfd, 失败返回-1参数 1.family:协议族PF_INET/AF_INET2.type:套接字类型,流式套接字SOCK_STREAM,数据报套接字SOCK_DGRAM,原始套接字SOCK_RAW3.protocol:协议类型(TCP/UDP/SCTP) bind函数:(绑定号码)…
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);  //设置套接字选项 回射服务器编写,服务器关闭后处于TIME_WAIT状态,过一段时间才可以绑定刚才的端口.在绑定服务器之前尽可能调用setsockopt来设置REUSEADDR套接字选项,使用REUSEADDR选项可以使得不必等待TIME_WAIT状态消失就可以重启服务器 服务器处理多并发,客户端短连接过来就创建子…
tcp_server.c #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <netinet/in.h> #include <arpa/inet.h> #include <ctype.h> #include <unistd.h&…
str_cli函数完成客户处理循环: 从标准输入读入一行文本,写到服务器上,读回服务器对该行的回射,并把回射行写到标准输出上 读入一行,写到服务器 fgets读入一行文本,writen把该行发送给服务器 从服务器读入回射行,写到标准输出 readline从服务器读入回射行,fputs把它写到标准输出 返回main函数 当遇到文件结束符或错误时,fgets将返回一个空指针,于是客户处理循环终止 我们的Fgets函数检查是否发生错误,若发生则中止进程,因此Fgets只是在遇到文件结束符时才返回一个空…
创建套接字,装填网际网套接字地址结构 创建一个TCP套接字,用服务器的IP地址和端口号装填一个网际网套接字地址结构 我们可从命令行参数取得服务器的IP地址 从头文件unp.h取得服务器的众所周知端口号(SERV_PORT) 连接到服务器 connect建立与服务器的连接 str_cli函数完成剩余部分的客户处理工作 #include "unp.h" int main(int argc, char **argv) { int sockfd; struct sockaddr_in serv…
TCP回射并发服务器 1.创建套接字,绑定服务器的众所周知端口 创建一个TCP套接字,在待绑定到该TCP套接字的网际网套接字地址结构中填入通配地址(INADDR_ANY) 和服务器的众所知周(SERV_PORT,在头文件中unp.h中其定义为9877) 绑定通配地址是在告知系统: 要是系统是多宿主机,我们将接受目的地地址为任何本地接口的连接 我们对TCP端口号的选择应该比1023大,比5000大,比49152小,而且不和任何注册的端口冲突 listen把该套接字地址转换成一个监听套接字 2.等待…
一.需求 把https://www.cnblogs.com/soldierback/p/10673345.html中的TCP回射服务器程序重写成使用select来处理任意个客户的单进程 程序,而不是为每个进程派生一个子进程 二.分析 (1)服务器有单个监听描述符    (2)服务器只维护一个读描述符集:假设服务器是在前台启动的,那么描述符0.1.2将分别被设置为标准输入.标准输出和标准错误输出:可见监听   套接字的第一个可用描述符是3    (3)服务器维护一个名为clients的整型数组,它…
前言 之前曾经学习过一对回射客户/服务器程序的例子,不过那个是基于TCP协议的.本文将讲解另一对回射客户/服务器程序,该程序基于UDP协议. 由于使用的协议不同,因此编写出的程序也有本质上的区别,应将它们对比来进行理解. 通信框架 服务器端 #include "unp.h" int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr, cliaddr; // 创建UDP套接字 sockfd = So…
前言 之前曾经学习过一对回射客户/服务器程序的例子,不过那个是基于TCP协议的.本文将讲解另一对回射客户/服务器程序,该程序基于UDP协议.由于使用的协议不同,因此编写出的程序也有本质上的区别,应将它们对比来进行理解. 通信框架 服务器端 #include "unp.h" int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr, cliaddr; // 创建UDP套接字 sockfd = Soc…
一.介绍 在学习UNIX网络编程 卷1时,我们当时可以利用Socket套接字来实现回射客户/服务器程序,但是Socket编程是存在一些不足的,例如: 1. 服务器必须启动之时,客户端才能连上服务端,并与服务端进行通信: 2. 利用套接口描述符进行通信,必须知道对端的IP与端口. 二.相关函数介绍 下面,我们利用System V消息队列来实现进程间的通信: 首先,我们先来了解一下下面几个函数: 1. msgget: 该函数用于打开或创建消息队列,其作用相当与文件操作函数open. #include…