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

    socket就是一个模块,服务器

     1 import socket
     2 sk = socket.socket()
     3 sk.bind(('127.0.0.1',9999,))
     4 sk.listen(5)
     5 while True:
     6     conn,address = sk.accept()
     7     conn.sendall(bytes("welcome",encoding="utf-8"))
     8     while True:
     9         ret_bytes = conn.recv(1024)
    10         ret_str = str(ret_bytes,encoding='utf-8')
    11         print(ret_str)
    12         if ret_str == 'q':
    13             break
    14         conn.sendall(bytes((ret_str+""),encoding="utf-8"))#发送文件python3.5需要转换成字节再发送,面pyhton2.7不需要直接发送
    15     print(address,conn)

    客户端

     1 #!/usr/bin/env python3
     2 import socket
     3 obj = socket.socket()
     4 obj.connect(("127.0.0.1",9999))
     5 ret_bytes = obj.recv(1024)
     6 ret_str = str(ret_bytes,encoding='utf-8')
     7 print(ret_str)
     8 while True:
     9     inp = input("please input your text:")
    10 
    11     if inp == 'q':
    12         obj.sendall(bytes(inp,encoding="utf-8"))
    13         break
    14     else:
    15         obj.sendall(bytes(inp,encoding='utf-8'))
    16         ret = str(obj.recv(1024),encoding="utf-8")
    17         print(ret)
    18 
    19 obj.close()

    常用的发送sednall ,连接connect,接收recv

    上传文件到服务器

    服务端

     1 #!/usr/bin/env python3
     2 import socket
     3 sk = socket.socket()
     4 sk.bind(('127.0.0.1',9999,))
     5 sk.listen(5)
     6 
     7 while True:
     8     conn,address = sk.accept()
     9     conn.sendall(bytes("welcome",encoding="utf-8"))
    10     #接收文件大小
    11     file_size = str(conn.recv(1024),encoding="utf-8")
    12     print(file_size)
    13     #收到文件大小之后发送一个确认包
    14     conn.sendall(bytes("ack",encoding='utf-8'))
    15     total_size = int(file_size)
    16     has_recv = 0
    17     f = open('456.jpg','wb')
    18     while True:
    19         if total_size == has_recv:
    20                 break
    21         data = conn.recv(1024)
    22         f.write(data)
    23         has_recv +=len(data)
    24     f.close

    客户端

     1 import socket
     2 import os
     3 obj = socket.socket()
     4 obj.connect(("127.0.0.1",9999))
     5 ret_bytes = obj.recv(1024)
     6 ret_str = str(ret_bytes,encoding='utf-8')
     7 print(ret_str)
     8 
     9 #发送当前文件大小
    10 ret = os.stat('123.jpg').st_size
    11 obj.sendall(bytes(str(ret),encoding="utf-8"))
    12 #接收确认包解决粘包问题
    13 obj.recv(1024)
    14 #发送文件
    15 with open('123.jpg','rb') as f:
    16     for line in f:
    17         obj.sendall(line)
    18 obj.close()
  • 相关阅读:
    如何创建html新元素
    jqury如何一次性实现连贯的一系列不同动作?
    jquery论callback事件发生与并列事件发生的区别
    jquery论三种动画停止的区别
    jquery animate多个属性设置为toggle的叠加效果
    如何一个键实现控制一个元素的隐藏和显示?
    jquery中mouseenter,mouseleave与hover的区别用法
    Zabbix探索:工作时间的设置
    Zabbix探索:网络设备监控3
    Zabbix探索:Proxy没有回传任何数据
  • 原文地址:https://www.cnblogs.com/wang43125471/p/7877601.html
Copyright © 2011-2022 走看看