• sockets模块


     TCP服务器

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import socket
    import os
    
    server  = socket.socket()
    server.bind(( 'localhost' ,  6969 ))  #绑定被监听端口
    server.listen( 5 )   #监听端口
    while True :
      print ( "我要开始等电话了" )
      conn, addr  = server.accept()  # 就是等待的意思
      #conn就是客户端连过来的时候,在服务器端为其生成的一个连接实例
      print ( "电话来了%s" % [conn, addr])
      while True :
        data  = conn.recv( 1024 )
        if not data:
          print ( 'client is lost.' )
          break
        # res = os.popen(data).read() #popen就是打开命令执行,read就是获取结果
        # with open('filename', 'r') as ret: #这两行就 可以用过来传输文件了。
        #   data = ret.read()
        print ( 'receive:' ,data)
        conn.send(data.upper())
    server.close()

    TCP客户端

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import socket
    
    
    client  = socket.socket()  #声明socket类型,同时生成socket链接对象
    client.connect(( 'localhost' , 6969 ))   #localhost就是本机地址
    
    while True :
      msg  = input ( 'input msg >>:' ).strip()
      if len (msg)  = = 0 :  continue #检查msg的信息,防止无输入信息
      #client.send(b"Hello, world!") #发送信息
      client.send(msg.encode( 'utf-8' ))
    
      data  = client.recv( 1024 )  #默认接受1024字节,就是1k
      # with open('filename', 'w') as ret: # 这两行就 可以用过来传输文件了。
      #   ret = data.write()
      print (data.decode())
    client.close()  #关闭端口

     UDP 服务器

    import socket
    def main():
        # 1创建套接字
        udp_socket  = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 2.绑定一个本地信息
        localaddr  = ( "localhost" , 6969 )  # 必须绑定自己电脑IP和port
        udp_socket.bind(localaddr)
        # 3.接收数据
        while True :
            recv_data  = udp_socket.recvfrom( 1024 )
            # recv_data存储元组(接收到的数据,(发送方的ip,port))
            recv_msg  = recv_data[ 0 ]  # 信息内容
            send_addr  = recv_data[ 1 ]  # 信息地址
            # 4.打印接收到的数据
            # print(recv_data)
            print ( "信息来自:%s 内容是:%s" % ( str (send_addr),recv_msg.decode( "utf-8" )))
        # 5.退出套接字
        udp_socket.close()
    if __name__  = = "__main__" :
        main()

      UDP 客户端

    import socket
    def main():
        # 创建一个套接字
        udp_socket  = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        while True :
            # 从键盘获取数据
            send_data  = input ( "请输入要发送的数据:" )
            # 退出函数
            if send_data  = = "exit" :
                break
            # 可以使用套接字收发数据,此时未绑定发送的端口号,系统每次会随机分配一个
            # udp_socket.sendto("hahaha",对方的IP和port)
            # udp_socket.sendto(b"lalala123",("172.17.3.97",8080))
            udp_socket.sendto(send_data.encode( "utf-8" ),( "localhost" , 6969 )) 
    
        # 关闭套接字
        udp_socket.close()
    if __name__  = = '__main__' :
        main()
  • 相关阅读:
    [bzoj 4553][Tjoi2016&Heoi2016]序列
    [bzoj 5143][Ynoi 2018]五彩斑斓的世界
    [bzoj 4939][Ynoi 2016]掉进兔子洞
    luogu_P3674 小清新人渣的本愿
    [bzoj 2809][Apio2012]dispatching
    [bzoj 3110][zjoi 2013]K大数查询
    Entity Framework技巧系列之九
    Entity Framework技巧系列之八
    Entity Framework技巧系列之七
    Entity Framework技巧系列之六
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/15974504.html
Copyright © 2020-2023  润新知