linux IPC socket(3)server简单写法
写server的一些流程总结
一、向内核申请一个socket
TCP形式
- sock_fd = socket(AF_INET, SOCK_STREAM, );
UDP形式
- sfd = socket(AF_UNIX, SOCK_STREAM, );
二、使用bind
网络中的地址包括3个方面:1.地址类型 2.IP地址 3.端口
- include <netinet/in.h>
- struct sockaddr {
- unsigned short sa_family; // 2 bytes address family, AF_xxx
- char sa_data[]; // 14 bytes of protocol address
- };
- // IPv4 AF_INET sockets:
- struct sockaddr_in {
- short sin_family; // 2 bytes e.g. AF_INET, AF_INET6
- unsigned short sin_port; // 2 bytes e.g. htons(3490)
- struct in_addr sin_addr; // 4 bytes see struct in_addr, below
- char sin_zero[]; // 8 bytes zero this if you want to
- };
- struct in_addr {
- unsigned long s_addr; // 4 bytes load with inet_pton()
- };
所以使用bind前要先设置参数:
1.清空的写法:
- struct sockaddr_in servaddr = {};
- memset(&servaddr , , sizeof(struct sockaddr_un));
- bzero(&servaddr, sizeof(struct sockaddr_in));
2.设置初值:
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons(SERV_PORT);
- /* 设置sin_addr的方式又有不少 */
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
- servaddr.sin_addr.s_addr = inet_addr("192.168.0.1");
3.运行bind,会把sockaddr_in强制转换成sockaddr
- bind(sfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr_in))
三、listen函数
- listen(sock_fd, );
第二个参数是:等待连接队列的最大长度
四、accept函数
- sock_fd = accept(sock_id, NULL, NULL);
第二个和第三个参数与bind类似,不过是客户端的传过来的信息。
accept会返回一个成功连接的socket描述符
对这个返回的描述符写,就是发送数据了
linux IPC socket(3)server简单写法的更多相关文章
- linux IPC socket(2)
使用bind来关联地址和套接字 #include <sys/types.h> #include <sys/socket.h> int bind(int sockfd, cons ...
- Linux IPC socket 广播,组播
getsockopt()/setsockopt() //获得sockfd指向的socket的属性 int getsockopt(int sockfd, int level, int optname, ...
- Linux IPC socket编程基础
头文件 #include<unistd.h> #include <sys/types.h> #include <sys/socket.h> #include< ...
- linux IPC socket
套接字是通讯端点的抽象 创建一个套接字 #include <sys/types.h> #include <sys/socket.h> int socket(int domain ...
- [转载]socket下server端支持多客户端并发访问简单实现
/*Author: wainiwann *Source: 博客园 http://www.cnblogs.com/wainiwann *Remarks: 转载请说明出处!!! */ 感觉很不错,可以学 ...
- Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结
Socket TCP Server一个端口可以有多少个长连接? 网上答案很多,不知道那个才是正确的 理论上是无限的 16.Linux中,一个端口能够接受tcp链接数量的理论上限是? A.1024 B. ...
- Linux C Socket编程原理及简单实例
部分转自:http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx 1. 什么是TCP/IP.UDP? 2. Socket在哪里 ...
- Linux线程池在server上简单应用
一.问题描写叙述 如今以C/S架构为例.client向server端发送要查找的数字,server端启动线程中的线程进行对应的查询.将查询结果显示出来. 二.实现方案 1. 整个project以cli ...
- linux系统socket通信编程详解函数
linux socket编程之TCP与UDP TCP与UDP区别 TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之 ...
随机推荐
- Ubuntu Visual code安装与使用
1.直接启动软件中心,输入visual studio code,点击install即可,千万千万不要去装逼搞什么linux指令安装,死都不知道怎么死的 2.Visual code是以文件夹为工程目录的 ...
- STM32输入捕获TIM2四通道
相比于一通道,原子的例程里因为清了计数时间,所以要对程序进行修改. 记录上升沿后的计数,然后记录下降沿的计数.相减后计算高电平时间,对于定时器中断间隔的边界要分开处理. 这里因为我的接收机时间是1ms ...
- 【BZOJ1396】识别子串(后缀自动机,线段树)
题意: 一行,一个由小写字母组成的字符串S,长度不超过10^5 思路:论文题 设p为自动机上的合法结点,r为右端点,len=st[fa[p]]]+1 位置[r-st[p]+1,r-len+1]与r-i ...
- python中的open()函数
定义: python open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写 参数: 模式 描述 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模 ...
- python 中的__str__ 和__repr__方法
看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): self.data = value >> ...
- Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 解决方法
可以通过如下命令来解决,具体就是先关闭服务器,然后再重启服务器: cd /etc/init.d sudo service mysql stop sudo service mysql start
- nRF51822 之 Interrupt
nRF51822的中断使用在官方的例程中好像没有!
- Windows-计划任务-自动备份数据库和文件
开始 -> 程序 -> 附件 -> 系统工具 -> 计划任务 .bat 文件如下: ::数据库+文件备份 @echo off ::日期时间 set yyyymmdd=%date ...
- Python 进阶_闭包 & 装饰器
目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...
- iview+vue 使用中遇到的问题(分页)
1.分页默认页数 当页面只有一个功能需要分页组件时,引用iview分页组件当然没问题.当一个页面中有多个需要分页组件的时候,便容易出现问题.例如:在项目中有多个不同的表格需要分页功能,几个表格共用一个 ...