zoukankan      html  css  js  c++  java
  • Linux下tcp服务器创建的步骤

    创建一个socket,使用函数socket()

    socket(套接字)实质上提供了进程通信的端点,进程通信之前,双方首先必须建立各自的一个端点,否则没有办法通信。通过socket将IP地址和端口绑定之后,客户端就可以和服务器通信了

    #include<sys/socket.h>

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

    返回值:成功返回套接字文件描述符,失败返回-1

     

     struct sockaddr_in (或者 struct sock_addr)用于记录网络地址

    struct sockaddr_in

    {

    short int sin_family;/*协议族*/

    unsigned short int sin_port;/*端口号*/

    stunt in_addr sin_addr; /*协议特定地址*/

    unsigned char sin_zoero[8]; /*填0*/

    }

    IP地址转换

    int inet_aton(const char *cp,struct in_addr *inp)//将a.b.c.d形式的IP转换为32位的IP。存储在inp指针里

    char *inet_ntoa(struct in_addr in)//将32位IP转换位a.b.c.d的格式

    字节序转换

     

    绑定IP地址和端口信息到socket,使用函数bind()

    让用户发现用以连接的服务器的地址

    返回值:成功返回0,失败返回-1

    #include <sys/socket.h>

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

     

    设置允许的最大连接数,使用函数listen()

    服务器调用listen函数来宣告可以接受连接请求

    #include <sys/socket.h>

    int listen(int sockfd , int backiog );

    返回值:成功返回0,失败返回-1

    参数backiog:用于表示服务器能接受的请求数量

    等待来自客户端的连接请求,使用函数accept( )

    #include <sys/socket.h>

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

     

    收发数据,用函数recv()、send()/ sendto()或者 read()、write()

    关闭网络连接,close

  • 相关阅读:
    从 i++ 和 ++i 说起局部变量表和操作数栈
    数据库连接情况查询相关sql语句
    db2相关语句
    BeanUtils源码详解
    Spring注解驱动开发之AOP
    Spring注解驱动开发之IOC
    正则表达式
    linux特殊符号
    linux下面如何让一个软件/命令开机自启动
    linux文件属性
  • 原文地址:https://www.cnblogs.com/cyyz-le/p/11059229.html
Copyright © 2011-2022 走看看