Linux 基本网络编程

简介:

基本套接字分为客户机/服务器和点对点模式。

C/S:sever/client---------------------------一般采用TCP

B/S:browser/server-----------------------一般采用UDP

常用的数据结构有in_addr(存储IP地址),sockaddr_in(表示Internet协议地址结构),sockaddr(存储主机IP地址和接口信息)。

复制代码
struct in_addr{
    union{
        struct{u_char, s_b1, s_b2, s_b3, s_b4} s_un_b;
        struct{u_short s_w1, s_s2;} s_un_w;
        u_long s_addr;
  } s_un;
}
复制代码
struct sockaddr_in{
    short sin_family;                //AF_INET
    u_short sin_port;               //16位端口号
    struct in_addr sin_addr;   //32位IP地址
    char sin_zero[8];
};        
struct sockaddr{
    unsigned short sa_family;
    char sa_data[14];
};

例子:

in_addr test;
test..s_un_b.s_b1=192;
test..s_un_b.s_b2=168;
test..s_un_b.s_b3=0;
test..s_un_b.s_b4=1;
struct sockaddr_in serverAddr;
memst(&serverAddr,0,sizeof(struct sockaddr_in));
serverAddr.sin_family=AF_INET;                          //AF_INET表示TCP
serverAddr.sin_port=htons(80);
serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);           //INADDR_ANY表示当前所用的IP

常用函数

复制代码
#incldue<sys/socket.h>

//创建套接字
SOCKET PASCAL FAR socket(int af, int type, int protocol)
//af指定通信协议--AF_UNIX,AF_INET,AF_NS
//type指定套接字类型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP),SOCK_RAM(原始套接字)
//protocol指定特定协议

//套接字绑定
int PASCAL FAR bind(SOCKET s, const struct sockaddr FAR *name, int namelen)
//s指定要关联的套接字
//name指定要绑定的IP地址与端口信息

//侦听
int PASCAL FAR listen(SOCKET s, int backlog)
//backlog指定请求连接队列的最大长度,一般设为5

//侦听,接受数据
SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen)
//s为当前指定的套接字
//addr为保存当前客户端的地址信息

//创建连接
int PASCAL FAR connect(SOCKET s, const struct sockaddr FAR* name, int namelen)

//TCP发送数据
int PASACAL FAR send(SOCKET s, const char FAR* buf, int len, int flags);
//s指定已经连接的套接字
//buf表示待发送数据的缓冲区
//flags用于设定发送控制参数,一般为0

//TCP接受数据
int PASACAL FAR recv(SOCKAET s,char FAR* buf,int len,int flags);

//UDP发送数据
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
ssize_t recvform(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *from, socklen_t fromlen) 
//sockfd表示已经创建好的一个UDP套接字 
//to.from用于设置接受方和发送方的地址信息 
//tolen,fromlen用于设置地址信息的长度
复制代码

本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/archive/2013/04/02/2995827.html,如需转载请自行联系原作者

相关文章
|
3月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
112 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
261 18
|
4月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
218 5
|
5月前
|
Web App开发 网络协议 Linux
【Linux】网络基础
TCP/IP五层模型是网络通信的基础框架,将复杂的数据传输过程分为物理层、数据链路层、网络层、传输层和应用层,每层各司其职,协同完成远程通信。该模型确保了不同设备和网络之间的互联互通,是现代互联网运行的核心机制。
332 5
|
5月前
|
网络协议 Linux 开发者
深入Linux中UDP网络通信机制编程探索
以上步骤概述了Linux中UDP网络通信的编程机制。在实现时,因关注细节和上下文环境可能有所调整,但大致流程是一致的。这些知识片段旨在帮助开发者快速上手Linux下的UDP编程,并提供可靠的信息作为编程的基础。在编程实践中,应结合实际业务需求,设计合适的数据传输协议,确保数据的正确性和实时性。
141 0
|
7月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
208 18
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
448 2
|
7月前
|
Linux 数据安全/隐私保护
使用Linux命令行接入无线网络Wi-Fi的示例。
现在,你已经使用命令行成功地连接到 Wi-Fi 网络了。这两个示例涵盖了用 `nmcli` 和 `wpa_supplicant` 连接无线网络的常见场景,让你能够不依赖图形化界面来完成这个任务。在日常使用中熟练掌握这些基本操作能增强你对 Linux 系统的理解,帮助你更有效地处理各种问题。
482 12
|
7月前
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
239 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
9月前
|
Ubuntu Linux
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
1320 20