基于C/S的简单TCP网络编程

本文介绍了C/S模式下的TCP网络编程,讲解了包括socket、connect、bind、listen、accept、read、write等基本函数的使用,并给出了一个实际案例:客户端发送两个随机数给服务器,一个服务器返回两数之和,另一个返回两数之差。
摘要由CSDN通过智能技术生成

基本常用函数介绍

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

创建一个socket套接字,并返回一个套接字描述符
第一个参数用以选择套字的协议族
常用参数极其目的如下:
第二个参数用以选择套接字的传输方式,在TCP协议中我们选择**SOCK_STREAM**使我们的创建的套接字成为 一个有序的,可靠的,双向数据流。
第三个参数为0。

返回值>0为socket描述符,等于0说明创建socket错误。
  1. void bzero(void *s, size_t n);

     bzero()函数可以将前N个字节的信息设置为'\0'。
     无返回值
     参数:
     *s ——想要的更改的数据
      n ——想要更改数据的长度
    
    1. int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
      功能:连接服务器
      参数
      sockfd——我们之前创建的套接字描述符
      sockaddr的结构体,其内部定义如下:
      struct sockaddr_in {
      short sin_family /AF_INET/
      u_short sin_port; /端口号,网络字节顺序/
      struct in_addr sin_addr; /IP地址,网络字节顺序/
      char sin_zero[8]; /填充字节,必须为全零/
      };
      我们可以在sockaddr中定义端口号,套接字类型,ip地址如下:

      addrlen——地址结构长度

      设置代码:

    ClientSock1.sin_family = AF_INET;
    ClientSock1.sin_port = htons(PORT1);
    ClientSock1.sin_addr.s_addr = inet_addr("127.0.0.1");
连接代码
if(connect(sockfd1,(struct sockaddr*)&ClientSock1,ClientLen1)==-1){
        printf("connect error");
        exit(1);
    }

返回值:
0 -成功 ,-1 - 失败,errno 为错误代码

4.int bind(int sockfd,struct sockaddr *myaddr,int addrlen);
功能:绑定本地地址和端口
参数:
sockfd-socket描述符
myaddr-自己的地址
addrlen-地址结构长度
返回值:
0-成功,-1-失败,errno为错误代码
注意:
服务器和客户端均可以绑定socket地址,但客户端通常不绑定自己的socket地址,而是系统随机分配一个端口,由该端口和本机ip地址填充套接字地址。

if(bind(sockfd,(struct sockaddr*)&serverAddr,serverLen)==-1){
        printf("bind error");
        exit(1);
    }

5.int listen(int sockfd,int qlen)
功能:监听本地地址和端口
参数:
sockfd-已绑定的socket描述符
qlen - socket能处理的最大并发连接数
返回值
0-成功,-1-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值