linux下C语言编程日志(1):基于TCP协议的服务器/客户端程序

  基于TCP协议的服务器/客户端程序

  首先我们看一下使用TCP协议进行网络通信的程序基本模型:服务器首先进行初始化操作:调用函数socket创建一个套接字,函数bind将这个套接字与服务器的公认地址绑定在一起,函数listen将这个套接字换成倾听套接字,然后调用函数accept来等待客户机的请求。过了一段时间后,客户机启动,调用socket创建一个套接字,然后调用函数connect来与服务器建立连接。连接建立之后,客户机和服务器通过读、写套接字来进行通信。

  熟练使用模型中的所有函数是编写网络程序的重要前提,下面我们就挑选几个重要的函数进行讲解,其它的可以参考linux的帮助手册。

Socket()函数原型为:

#include <sys/types.h>

#include < sys/socket.h >

 

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

参数domain指定要创建的套接字的协议簇,具体见表7-1;参数type指定套接字类型,具体见表7-2;参数protocol指定使用哪种协议。函数socket成功执行时,返回一个正整数,称为套接字描述符,否则返回-1,并设置errno为相应的错误类型。

7-1 domain的取值及其含义

Flags

含义

AF_UNIX

UNIX协议簇,本机的进程通信时使用

AF_INET

Internet协议簇(TCP/IP

AF_ISO

ISO协议簇

 

7-2 type的取值及其含义

Flags

含义

SOCK_STREAM

流式套接字

AF_DGRAM

数据报套接字

AF_RAW

原始套接字

 

bind()函数原型为:

#include <sys/types.h>

#include < sys/socket.h >

 

int bind(int sockfd,struct sockaddr *my_addr,int addrlen);

sockfd是调用socket返回的文件描述符;my_addr保存地址信息(端口和IP地址);addrlen设置为套接字地址的长度,即sizeof(struct sockaddr)。函数bind成功执行时返回0;否则返回-1,并设置errno的错误类型。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值