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()
原文地址:https://www.cnblogs.com/currynashinians000/p/8698236.html