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()

     

  • 相关阅读:
    Spring Boot 配置文件和命令行配置
    Spring Boot RestApi 测试教程 Mock 的使用
    Spring Boot 集成 Swagger2 教程
    Spring Boot Web 开发@Controller @RestController 使用教程
    SpringBoot RESTful API 架构风格实践
    Spring Boot 使用 Aop 实现日志全局拦截
    Spring Boot 全局异常处理
    Spring Boot Thymeleaf 模板引擎的使用
    Spring Boot Log 日志使用教程
    IDEA 下的 github 创建提交与修改
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5958218.html
Copyright © 2011-2022 走看看