python socket编程入门级
2021-07-03 08:06
标签:sel pre handle ... 消息 base cep 线程 tin 客户端 服务端 使用多线程版 python socket编程入门级 标签:sel pre handle ... 消息 base cep 线程 tin 原文地址:https://www.cnblogs.com/c-x-a/p/9623569.htmlimport socket
import time
sk = socket.socket() # 第一步:创建socket对象
address = (‘127.0.0.1‘, 8080) # 协议是ip+端口(类型元组)
sk.connect(address) # 第二步:建立链接
while True:
inp = input(‘客户端>>>>>>>>>\n‘)
if inp == ‘exit‘:
break
sk.send(bytes(inp, ‘utf8‘)) # 第三步:请求数据
time.sleep(1) # low方法防止粘包
data = sk.recv(1024) # 接收确认信息
print("接收服务端的数据", str(data, ‘utf8‘))
sk.close()
import socket
# family type
# AF_INET,AF_INET6
# AF_UNIX
# SOCK_STREAM:: TCP
# SOCK_DGRAM :: UDP
# sk只负责绑定端口等待链接,发送接收消息用conn。
sk = socket.socket() # 默认参数tcp
address = (‘127.0.1‘, 8080)
sk.bind(address) # 绑定ip协议和端口
sk.listen(3) # 定义最大可以挂起连接数。
print(‘服务的waiting.......‘)
while 1:
conn, addr = sk.accept() # 等待接收来自客户端的信息
print(addr)
while 1:
try:
data = conn.recv(1024)
except Exception:
break
if not data: break
print(‘接收到来自客户端的信息......‘, str(data, ‘utf8‘))
inp = input(‘》》》》》》》》‘)
conn.send(bytes(inp, ‘utf8‘))
import socketserver
class MyServer(socketserver.BaseRequestHandler):
# 重写父类的方法
def handle(self):
print(‘waiting.......‘)
while 1:
conn = self.request
print(self.client_address)
while 1:
try:
data = conn.recv(1024)
except Exception:
break
if not data:
break
print(‘......‘, str(data, ‘utf8‘))
inp = input(‘》》》》》》》》‘)
conn.sendall(bytes(inp, ‘utf8‘))
conn.close()
if __name__ == ‘__main__‘:
host = ‘127.0.0.1‘
ip = ‘8080‘
server = socketserver.ThreadingTCPServer((host, ip), MyServer)#多线程通话
# 不会出现在一个客户端结束后,当前服务器端就会关闭或者报错,而是继续运行,与其他的客户端继续进行通话。
server.serve_forever()