zoukankan      html  css  js  c++  java
  • socket,sockerserver

    s1

    import socket
    sk = socket.socket()
    sk.bind(("127.0.0.1",9999,))
    sk.listen(5)
    #接收客户端的请求
    while True:
    conn,address = sk.accept()#阻塞,等待来连
    conn.sendall(bytes("hello",encoding="utf-8"))
    print(address)
    while True:
    ret = str(conn.recv(1024),encoding="utf-8")
    if ret == "q":
    break
    conn.sendall(bytes((ret+"好"),encoding="utf-8"))

    c1

    import socket
    obj = socket.socket()
    obj.connect(("127.0.0.1",9999))
    result = str(obj.recv(1024),encoding="utf-8")#最多接收1024字节,阻塞,等待发
    print(result)
    while True:
    inp = input("请输入要发送的内容:")
    if inp == "q":
    obj.sendall(bytes(inp, encoding="utf-8"))
    break
    else:
    obj.sendall(bytes(inp,encoding="utf-8"))
    ret = str(obj.recv(1024),encoding="utf-8")
    print(ret)
    obj.close()

    s2

    import socket
    sk = socket.socket()
    sk.bind(("127.0.0.1",5555))#地址
    sk.listen(5)#最大排队5
    while True:
    conn,address = sk.accept()#等待连接
    conn.sendall(bytes("hello boy",encoding="utf-8"))#连接后发过去一个hello
    size = int(conn.recv(1024))#等待收到文件大小
    conn.sendall(bytes("开始发吧",encoding="utf-8"))#防止发生粘包
    new_size = 0
    with open("new.jpg","ab") as f:
    while True:
    if size == new_size:#判断大小是否相等
    break
    ret = conn.recv(1024)#1024=1k,默认最多8k
    f.write(ret)
    new_size += len(ret)






    c2

    import socket
    import os
    sk = socket.socket()
    sk.connect(("127.0.0.1", 5555))#连接
    ret = str(sk.recv(1024),encoding="utf-8")#阻塞,等待直到接收到hello
    print(ret)
    size = os.stat("0.jpg").st_size#获得大小
    sk.sendall(bytes(str(size),encoding="utf-8"))#发送大小
    ret = str(sk.recv(1024),encoding="utf-8")#防止发生粘包
    print(ret)
    with open("0.jpg", "rb") as f:
    for line in f:
    sk.sendall(line)#发送全部内容
    sk.close()

    s3

    import socketserver
    class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
    conn = self.request
    conn.sendall(bytes("hello", encoding="utf-8"))
    while True:
    ret = str(conn.recv(1024), encoding="utf-8")
    if ret == "q":
    break
    conn.sendall(bytes((ret + "好"), encoding="utf-8"))
    if __name__ == '__main__':
    server = socketserver.ThreadingTCPServer(("127.0.0.1",4444),MyServer)
    server.serve_forever()

    c3

    import socket
    obj = socket.socket()
    obj.connect(("127.0.0.1",4444))
    result = str(obj.recv(1024),encoding="utf-8")#最多接收1024字节,阻塞,等待发
    print(result)
    while True:
    inp = input("请输入要发送的内容:")
    if inp == "q":
    obj.sendall(bytes(inp, encoding="utf-8"))
    break
    else:
    obj.sendall(bytes(inp,encoding="utf-8"))
    ret = str(obj.recv(1024),encoding="utf-8")
    print(ret)
    obj.close()
  • 相关阅读:
    [算法分析]计数排序
    [置顶] 基于stm32f103zet6之UC/OS_II的学习1(初步移植OS点灯大法)
    IOS开发(59)之Block Object的调用
    【译】测试员,敢问路在何方?来自微软工程师
    各种字符串hash
    hdu 2579 BFS
    qq相册
    程序人生之我们的故事:十年如歌(9)
    关联模型和无限极分类
    十大技巧破解电话面试
  • 原文地址:https://www.cnblogs.com/currynashinians000/p/8698236.html
Copyright © 2011-2022 走看看