第十三节 网络编程

来源:互联网 发布:江苏大学网络教学平台 编辑:程序博客网 时间:2024/05/01 03:36
套节字编程,常用的Socket类型主要有两种:
    数据流套接字:提供面向连接的类型,如TCP
    数据报套接字:提供面向非连接的数据传输,如UDP


TCP::::::
    1.服务器端
        调用socket函数创建一个套接字
        将创建的套接字绑定到一个IP地址和端口,通过调用bind函数来实现;
        调用listen函数将套接字设为监听模式,以等待连接请求;
        请求到来后,接受连接请求,并返回一个与该连接对应的套接字,通过调用accept函数来实现;
        与客户进行通信
        终止连接,关闭套接字。

    2.客户端
        调用socket函数创建一个套接字
        向服务器发出连接请求,通过调用connect函数来实现;
        与服务器进行通信;
        终止连接,关闭套接字。


UDP::::::::
    1.服务器端
        调用socket函数创建一个套接字;
        将创建的套接字绑定到一个IP地址和端口上,通过调用bind函数来实现;
        等待接受数据报,处理完成后将结果返回客户端;
        终止连接,关闭套接字

    2.客户端
        调用socket函数创建一个套接字;
        向服务器发送数据报;
        终止连接,关闭套接字。


TCP连接流程图:::::
    socket()
       |
       |
    bind()
       |
       |
    listen()
       |
       |
    accept()                        socket()
       |                   |        
    阻塞,等待客户连接-------------    connect()
       |
    read()--------------------------write()
       |                               
    write()-------------------------read()
       |                               |
    close()                close()            




基于UDP的SOCKET工作流程
    socket()
       |
    bind()                             socket()
       |                                  |
    readfrom()               bind()
       |                      |
    阻塞,等待客户服务请求--------      sendto()
       |                      |    
    处理服务请求              readfrom()
       |                      |    
    sendto()            close()    
       |
    close()


创建套接字:socket
绑定套接字:bind
监听网络端口:listen
接受连接:accept
建立连接:connect
面向连接的数据传输:send和recv

无连接的数据传输:
sendto和recvfrom

关闭套接字
close


多路复用i/o并发服务器
无阻塞模式:
fcntl和iotcl
这样会浪费资源,使用select将进程挂起

域名系统:
gethostbyname函数可以通过域名来获取主机的IP地址等信息。





















       

0 0
原创粉丝点击