C语言网络编程——C/S架构模板

本文介绍了C语言进行网络编程的基础知识,包括socket()、bind()、listen()、accept()和connect()等关键函数的使用。通过示例展示了服务器端如何监听并接受连接,以及客户端如何发起连接,为理解C/S架构提供了基础模板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进行Socket编程的常用函数有:
socket:创建一个socket
bind:用于绑定IP地址和端口号到socket
connect:
该函数用于绑定之后的client端与服务器建立连接

listen: 设置能处理的最大连接要求,Listen()并未开始接收连线,只是设置socket为listen模式。
accept:用来接受socket连接。

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

socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程序可以像读写文件一样用read/write在网络上收发数据,如果socket()调用出错则返回-1
对于IPv4,family参数指定为AF_INET
对于TCP协议,type参数指定SOCK_STREAM

int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); 
服务器程序所监听的网络地址和端口号通常是固定不变的,客户端程序得知服务器程序的地址和端口号后就可以向服务器发起连接,因此服务器需要调用bind绑定一个固定的网络地址和端口号.bind()成功返回0,失败返回-1。

int listen(int s,int backlog);

listen()用来等待参数s的socket连线。参数backlog指定同时能处理的最大连接要求。

int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen); 

 三方插手完成后,服务器调用accept()接受连接,如果服务器调用accept()时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来,cliaddr是一个传出参数,accept()返回时传出客户端的地址和端口号.

int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); 
客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是自己的地址,而connect的参数是对方的地址.


服务端代码:

#include <stdlib.h> 
#include <stdio.h> 
#include <errno.h>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值