首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

网络编程之C/S模型

首先给大家推荐一本学习网络编程的书,很经典的一本用C语言实现的网络编程书-----UNIX网络编程。

C/S模型的建立就是分两部分,一个是服务器端程序的建立,另一个就是客户端程序建立。下面就服务器和客户端建立流程进行详细的讲解。

服务器端建立流程:

1.调用函数socket(),指定通信协议类型,建立套接字。

2.调用函数bind(),将本地地址绑定一个固定端口和相关接口,在调用bind之前需要将服务器地址端口信息进行设置。

3.调用函数listen(),将服务器端设置成监听状态,监听socket()创建的套接字。

4.调用函数accept(),接受客户端连接请求。如果没有客户端请求将阻塞。

5.当有客户端请求时调用函数read(),write()等完成客户端请求数据或者信息的传递。

6.服务器端退出时调用函数close(),关闭创建的通信套接字,释放系统资源(套接字也就是文件句柄是有限的,使用完要关闭,养成良好的编码习惯非常重要)。

客户端建立流程:

1.调用函数socket(),指定通信协议类型,建立套接字。根服务器端第一步一样,需要建立文件句柄。

2.调用函数connect(),建立与服务器的连接。

3.连接上服务器后便可以调用读写函数read()和write()完成与服务器的通信了。

4.最后一步别忘记调用close()来关闭不使用的套接字句柄。

客户端不需要bind()函数绑定端口,客户端的端口号由系统自动分配。

以上就是网络编程中典型的服务器客户端的通信模式,感兴趣的小朋友们可以调试一下服务器程序,客户端程序自己动手试试。

/*sever.c*/

#include

#include

#include

#include

#include

#include

#include

#include

#define SERV_PORT 8800

void perr_exit(const char *str)

{ perror(str);exit(1);}

intmain(){intsfd = socket(AF_INET,SOCK_STREAM,),cfd;structsockaddr_in servaddr;structsockaddr_in client_addr;inti,len; socklen_t addr_len;//initbzero(&servaddr,sizeof(structsockaddr_in)); servaddr.sin_family = AF_INET;//htons htonl 都属于网络字节序转换servaddr.sin_port = htons(SERV_PORT);//INADDR_ANY表示任意都可连接(因为客户端不是来自同一个网络地址)servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//if(bind(sfd,(structsockaddr *)&servaddr,sizeof(servaddr))

return;}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180420G0UQJP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券