Linux套接字基础编程

所谓套接字,其实就是通信端点的抽象。

而套接字编程,就是解决服务器端跟客户端之间的通信问题。

先说服务器端,简单的概括,分为四步:

1.创建套接字

int socket(int domain, int type, int protocol);

socket函数的第1个参数表示的是通信域,详情见下表

套接字域描述
域名(宏) 域的作用
AF_INET 表示使用IPv4协议
AF_INET6 表示使用IPv6协议
AF_UNIX 表示用于非网络环境的进程通信
AF_UNSPIC 未制定域
第2个参数表示套接字的类型,第3个参数表示协议类型

2.将套接字跟客户端地址绑定

int bind(int sockfd, const struct sockaddr *addr, socklen_t len);

这里特别说明一下,第2个参数在实际编程中使用struct sockaddr_int *addr。因此,在第二个地址结构参数的时候需要做一个强制类型转换。

struct sockaddr_in *addr;

/* 设置地址结构 */
addr = (struct sockaddr_in*)malloc(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
addr->sin_port = 1024;

/* 32位的IP地址,即192.168.11.6,注意应使用网络字节序进行赋值 */
addr->sin_addr = 0x60ba80c;

bind(fd,(struct sockaddr_in)addr, sizeof(struct sockaddr_in));/* 绑定地址 */

3.监听客户端的连接请求

int listen(int sockfd, int backlog);

listen函数的第1个参数用来进行连接请求监听的套接字描述符,第2个参数表示最多可以排队等待连接的请求数量。

4.接受连接请求

int accept(int sockfd, struct sockaddr *addr, socklen_t len);

accept函数的第1个参数是一个创建的套接字描述符,第2个参数是客户端的地址,第3个参数表示取得的客户端地址的大小。


现在说说客户端的实现,就只有两步:

1.第1步其实跟服务器端一样,创建一个套接字。

2.请求连接

int connect(int sockfd, const struct sockaddr *addr, socklen_t len);

想必参数都不用解释了吧。


今天不想码代码了,下次再附上一段示例代码吧。今天就写到这里了。

你可能感兴趣的:(网络编程)