zoukankan      html  css  js  c++  java
  • python socket 网络编程

     

     

    socket 套接字:网络接口。

    我们在网络上需要传输自己需要的数据,我们在网络上传输数据使用的是网络协议,

    而套接字就是我们将数据从本地采用协议传输的接口

     

     

    socket模型:

     

     

    socket族:
    #AF_UNIX 被使用在类unix系统之间进行通信的socket族
    #AF_INET 被使用在网络间的通信的socket族
    #AF_INET6 被使用在ipv6协议上的socket族
    socket类型:
    #SOCK_STREAM 针对于tcp/ip协议的socket类型
    #SOCK_DGRAM 针对udp协议的socket类型

     

    一、第一个socket例子:

    #socket_server

    import socket

    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #创建socket对象
    sock.bind(("127.0.0.1",8001))                        #绑定套接字
    sock.listen(5)                                            #监听 ,连接等待的队列大小

     
    conn,add=sock.accept()                  #  conn : <socket._socketobject object at 0x7f1c6010da60>  客户端的socket对象 # add: ('127.0.0.1', 34548)
    print(conn.recv(512))                  #接收信息
    conn.send("hello I am server".encode("utf-8"))     #发送信息
    sock.close()            #关闭连接

    #socket_client

    import socket

    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)          #创建socket对象
    sock.connect(("127.0.0.1",8001))                                #连接指定服务
    sock.send("I am client".encode("utf-8"))        #发送信息

    print(sock.recv(512))                 #打印接收到信息
    sock.close()        #关闭连接

     

     eg1:

     #server

    import socket
    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.bind(("127.0.0.1",8006))
    sock.listen(5)
    while True:
      conn,add=sock.accept()
      while True:
        recvs = conn.recv(512)
        print(recvs)

        if recvs == "break":
          break
        sends = raw_input(">>>>")
        conn.send(sends)
        if sends == "break":
          break
    sock.close()

     

     #client

    import socket

    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.connect(("127.0.0.1",8006))
    while True:
      sends = raw_input(">>>>")
      sock.send(sends)
      recvs = sock.recv(512)
      print(recvs)
      if recvs == "break":
        break
    sock.close()

     

  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5958218.html
Copyright © 2011-2022 走看看