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用于设置地址信息的长度
复制代码

例子:

TCP:

 

UDP:

 

 

 

 

知识共享许可协议
本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

相关文章
|
1月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
12天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
32 6
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
56 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
39 0
|
3月前
|
Linux
基于 Linux 的文件操作 网络编程的最后一环
Linux下万物皆文件 在了解了客户端和服务器的函数调用之后,我们只需要了解下文件操作就能编写出属于自己的客户端和服务器了,还能让他们进行通信。
23 0
|
1月前
|
网络协议 Linux API
Linux网络编程:shutdown() 与 close() 函数详解:剖析 shutdown()、close() 函数的实现原理、参数说明和使用技巧
Linux网络编程:shutdown() 与 close() 函数详解:剖析 shutdown()、close() 函数的实现原理、参数说明和使用技巧
74 0
|
1月前
|
网络协议 Linux C++
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
25 0
|
1月前
|
NoSQL Java Linux
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
62 0
|
2月前
|
存储 网络协议 Linux
linux网络编程浅谈
linux网络编程浅谈
|
2月前
|
网络协议 Linux
Linux下的网络编程——B/S模型HTTP(四)
Linux下的网络编程——B/S模型HTTP(四)
34 0