IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    网络编程笔记

    Fish (fsh267@gmail.com)发表于 2014-02-17 00:00:00
    love 0

    #socket 模块 在网络编程中的一个基本组件就是套接字(socket).套接字主要是两个程序之间的”信息通道”

    套接字包括:服务器套接字和客户机套接字, 创建一个服务器套接字后, 就让他等待连接, 这样他就在某个网络地址处(IP地址和一个端口号的组合)监听.

    一个套接字就是一个socket模块中的socket类的实例. 他的实例化需要3个参数:

    地址族(默认是socket.AF_INET)
    流套接字(默认是socket.SOCK_STREAM)或数据报套接字
    使用的协议(默认是0)

    服务器套接字使用bind方法后, 再调用listen方法去监听这个给定的地址.客户端使用connect方法连接到服务器,在connect方法中使用的地址与bind方法中使用的地址相同. 在这种情况下, 一个地址就是一个格式为(host, port) 的元祖.

    服务器套接字开始监听后, 就可以接受客户端的连接, 这个步骤使用accept方法来完成. 这个方法会阻塞知道客户端连接, 然后返回一个格式为(client, address)的元祖.

    套接字有两个方法: send和recv, 用于数据传输.

    ###一个小型服务器

    import socket
    
    s = socket.socket()
    host = socket.gethostname()
    port = 5267
    s.bind((host, port))
    s.listen(5)
    
    while True:
        c, addr = s.accept()
        print "got connect from", addr
        c.send("hello, client!")
        c.close()

    ###一个小型客户机

    import socket
    
    s = socket.socket()
    host = s.gethostname()
    port = 5267
    
    s.connect((host, port))
    print s.recv(1024)


沪ICP备19023445号-2号
友情链接