import socket
if __name__ == '__main__':
# 创建客户端连接对象 socket.AF_INET(ipv4) socket.SOCK_STREAM(tcp协议)
so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接 连接地址 + 端口
so.connect(('192.168.0.108', 8080))
# 向服务端发送数据 (tcp协议层只能传输二进制数据,所以要转换成二进制)
so.send('你好!'.encode(encoding='utf-8'))
# 接收服务端 的数据
so_recv = so.recv(1024)
print(so_recv.decode())
# 关闭客户端
so.close()
# 简单的服务端socketdome
# import socket
#
# if __name__ == '__main__':
# # 创建服务端对象
# so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# # 监听端口
# so.bind(('192.168.0.108', 8080))
# # 设置监听最大连接数量
# so.listen(100)
# # 等待客户端连接请求
# conn_socket, ip_port = so.accept()
# print(ip_port)
# # 接收数据
# so_recv = conn_socket.recv(1024)
# print(so_recv.decode())
# # 发送数据
# conn_socket.send('你的消息我收到了'.encode())
# # 关闭
# conn_socket.close()
# so.close()
# 优化后的socket 通过多线程连接,使多个客服端的消息正常接收
import socket
import random
import threading
def socket_h(conn_socket):
# 接收数据
so_recv = conn_socket.recv(1024)
print(so_recv.decode())
# 发送数据
conn_socket.send(f'你的消息我收到了{random.randint(1, 9)}'.encode())
# 关闭
conn_socket.close()
if __name__ == '__main__':
# 创建服务端对象
so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 监听端口
so.bind(('192.168.0.108', 8080))
# 设置监听最大连接数量
so.listen(100)
while True:
# 等待客户端连接请求
conn_socket, ip_port = so.accept()
print(ip_port)
sub_socket = threading.Thread(target=socket_h,(conn_socket,))
sub_socket.start()
so.close()
发表评论