zoukankan      html  css  js  c++  java
  • TCP,UDP

    地址转换:atonatoa,ascii,network,32bit与ascii转换
    
    大端小端转换
    
    字节充转换:htonshtonlhtohs
    tohl.网络序与主机序转换。
    
    主机名转换为IP地址:
    struct hostent *gethostbyname(const char *hostname)
    struct hostent
    {
        char *h_name;
        char *h_aliases;
        int h_addrtype;
        int h_length;
        char **h_addr_list;
    }
    
    sock编程常用函数:
    socket创建一个socket
    bind绑定IP地址的端口号到socket
    connect连接服务器
    listen设定服务器允许的最大连接数
    accept等待客户端socket连接请求
    send发送数据
    recv接收数据
    
    
    基于TCP服务器:
    a.使用socket函数创建socket
    b.使用bind函数绑定IP地址、端口信息到socket上
    c.使用listen设置允许的最大连接数
    d.使用accept等待客户端连接请求,阻塞等待。
    e.使用send/recv或者read/write收发数据
    f.关闭连接
    
    基于TCP客户端:
    a.使用socket创建socket
    b.设置要连接的服务器的IP地址和端口的属性
    c.使用connect连接服务器
    d.使用send/recv或者read/write收发数据
    e.关闭连接
    
    
    基于UDP服务器:
    a.使用socket创建一个socket
    b.使用bind绑定地址、端口信息到socket
    c.使用recvfrom循环接收数据
    d.关闭连接
    
    基于UDP客户端:
    a.使用socket创建一个socket
    b.使用bind绑定地址、端口信息到socket
    c.设置对方的IP地址、端口等属性
    e.使用sendto发送数据
    f.关闭连接
    
    
    并发服务器模型:
    循环服务器:在同一时刻只能响应一个客户端请求
    并发服务器:服务器同一时刻可以响应多个客户端请求
    
    
    实现方法:
    UDP服务器每次从套接字上读取一个客户端的夜请求---处理---然后将结果返回给客户端。
    socket();
    bind();
    while(1)
    {
         recvfrom();
        process();
        sendto();
    }
    
    TCP循环服务器接受一个客户端连接,然后处理,完成这个客户端所有请求后,断开连接:
    socket();
    bind();
    listen();
    while(1);
    {
        accept();
        process();
        close();
    }
    
    
    TCP并发服务器:
    并发服务器思想是每一个客户机的请求并不是由服务器直接处理,而是由服务器创建子进程来处理:
    socket();
    bind();
    listen();
    while(1)
    {
        accept();
        if(fork()==0)
        {
            process();
            close();
            exit();
        }
        close();
    }
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    http 请求code状态码
    js 跳转链接
    a标签-伪类
    在linux中如何解压.tgz
    dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.63.dylib
    nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
    微信小程序实现左滑删除效果(原生/uni-app)
  • 原文地址:https://www.cnblogs.com/timssd/p/4104783.html
Copyright © 2011-2022 走看看