linux socket编程注意点 和 关闭selinux、防火墙 或者 设置相应端口允许通讯!!!
来源:互联网 发布:除了京东淘宝还有什么 编辑:程序博客网 时间:2024/05/22 01:23
在Linux系统下:
socket创建失败,返回-1。
accept等待连接失败,返回-1。
在Linux系统下:
#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);
有些系统包含的头文件是 <netinet/in.h> 而不是 <arpa/inet.h>.
htonl()返回一个网络字节顺序的值。将主机数转换成无符号长整型的网络字节顺序。本函数将一个32位数从主机字节顺序转换成网络字节顺序。sctLocalAddr.sin_addr.s_addr = htonl( INADDR_ANY);
htons的功能:将一个无符号短整型的主机数值转换为网络字节顺序,即大尾顺序(big-endian)
参数u_short hostshort:16位无符号整数
返回值:TCP/IP网络字节顺序.
sctLocalAddr.sin_port = htons((short)TCPPROTNUM);
在linux 环境下为:
#include <sys/types.h>
#include <sys/socket.h>
int bind( int sockfd , const struct sockaddr * my_addr, socklen_t addrlen);
返回:成功返回0,失败返回-1.
参数列表中,sockfd 表示已经建立的socket编号(描述符);
my_addr 是一个指向sockaddr结构体类型的指针;
参数addrlen表示my_addr结构的长度,可以用sizeof函数获得。
Linux下inet_pton和inet_ntop这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换。而且,这2个函数能够处理ipv4和ipv6。算是比较新的函数了。
inet_ntop函数原型如下[将“二进制整数” -> “点分十进制”]
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和inet_pton相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,
如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC。
char addr_p[16]; /*IP地址的点分十进制字符串表示形式*/
struct in_addr addr_n;/*IP地址的二进制表示形式*/
printf("connect from %s, port:%d \n",
Inet_ntop( AF_INEF, &sctClientAddr, addr_p, (socklen_t)sizeof(addr_p)),/*地址由二进制数转换为点分十进制*/
ntohs(sctClientAddr.sin_port)
);
出错检查:
inet_pton函数成功的话返回1,参数无效返回0,错误返回-1;
inet_ntop函数成功的话返回字符串的首地址,错误返回NULL;
- linux socket编程注意点 和 关闭selinux、防火墙 或者 设置相应端口允许通讯!!!
- Linux关闭防火墙、SELinux
- linux关闭防火墙,selinux
- redhat linux关闭防火墙和禁用selinux
- Linux笔记_关闭 防火墙 和 SELINUX
- 关闭SELinux和防火墙
- 关闭selinux和防火墙开启状态增加3306端口
- Linux关闭防火墙命令和selinux关闭命令
- 如何关闭selinux和防火墙
- centos6关闭selinux和防火墙
- CentOS7关闭防火墙和selinux
- Centos7 关闭防火墙和selinux
- CentOS7关闭防火墙和SELinux
- CentOS7关闭防火墙和SELinux
- centos7 关闭防火墙和selinux
- Linux 防火墙和SELinux的开启和关闭
- linux防火墙和SELinux
- linux 防火墙设置、selinux禁用
- 跳格子问题——阿里笔试
- Qt界面显示中文乱码问题
- 将图层属性表的信息显示在DataGridView的控件上
- #pragma comment(linker, "/subsystem:console")
- 总结系列-Android的文件系统
- linux socket编程注意点 和 关闭selinux、防火墙 或者 设置相应端口允许通讯!!!
- 窗口刷新 Invalidate UpdateWindow RedrawWindow
- JavaScript中访问id对象.属性的方式访问属性
- git教程 搭建GIT服务器
- 使用delegate的步骤
- 8.2.1.9 LEFT JOIN and RIGHT JOIN Optimization 左连接和右连接优化:
- eclipse 插件安装
- 数据库 三范式的解释
- No Debuggable Applications 于Android studio解决方案