#--------------------- 服务器端代码--------------------
# -*- coding: UTF-8 -*-
# author : kele
# time : 2018/12/27 19:13
# 导入socket
import socket, threading
# 创建一个socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本机ip
host = socket.gethostname()
# 给定端口
port = 9090
# 服务端ip和端口
server.bind((host, port))
# 最大链接数
server.listen(5)
print('输入enter退出服务器:')
# 阻塞式等待客户端链接,返回链接对象,与链接对象地址
client, addr = server.accept()
print('-'*5+f'服务器被{addr}'+'-'*5)
def outdatas():
while True:
# 输入要给客户端的信息
outdata = input('')
if outdata=='enter':
break
print('发送给客户端:%s'% outdata)
# 给客户端发送信息
client.send(outdata.encode('utf-8'))
def indatas():
while True:
# 接收来自客户端的信息
indata = client.recv(1024)
print('客户端:'+indata.decode('utf-8'))
# 建立多线程
t1 = threading.Thread(target=indatas, name='input')
t2 = threading.Thread(target=outdatas, name='out')
# 启动多线程
t1.start()
t2.start()
# 堵塞线程知道子线程执行完毕,主线程才能结束
# t1.join()
t2.join()
# 关闭服务器
client.close()
print('-'*5+'服务器断开连接'+'-'*5)
#--------------------- 客户端代码--------------------
# -*- coding: UTF-8 -*-
# author : kele
# time : 2018/12/27 19:22
# 导入socket包
import socket, threading
# 创建客户端对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 目标主机
host = input('请输入目标ip')
# 目标端口
port = 9090
# 连接客户端
client.connect((host, port))
print('-'*5+'已连接到的服务器'+'-'*5)
print('-'*5+'输入enter关闭与服务器的链接'+'-'*5)
def outdatas():
while True:
# 输入要发送给服务器的信息
outdata = input('')
if outdata=='enter':
break
print('发送给服务器:%s'% outdata)
# 发送给服务器
client.send(outdata.encode('utf-8'))
def indatas():
while True:
# 接收来自服务器的信息
indata = client.recv(1024)
# 将接收到的信息,进行编码
print('服务器:'+indata.decode('utf-8'))
# 建立多线程
t1 = threading.Thread(target=indatas, name='input')
t2 = threading.Thread(target=outdatas, name='out')
# 启动多线程
t1.start()
t2.start()
# 堵塞线程知道子线程执行完毕,主线程才能结束
# t1.join()
t2.join()
# 关闭链接
print('-'*5+'服务器断开连接'+'-'*5)
client.close()
Python基础socket一对一聊天室
猜你喜欢
转载自blog.csdn.net/keer1303242749/article/details/85311225
今日推荐
周排行