用户:sparkle-xUi查看:0 回复:0 评论:0 创建时间:2020-12-23T11:12:38
【作品展示】

【作品介绍】
tcpserver
【作品源代码】
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tkinter
import datetime
import tkinter.messagebox
import socket
def func():
print(text2.get("0.0", "end"))
print(text3.get("0.0", "end"))
t1 = text2.get("0.0", "end")
t2 = text3.get("0.0", "end")
t1 = t1.replace('\n', '')
t2 = t2.replace('\n', '')
if t2 == "":
tkinter.messagebox.askokcancel('消息', '端口不能为空!请重新输入')
return
port = int(t2)
# 1. 买个手机(创建套接字 socket)
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 插入手机卡(绑定本地信息 bind)
tcp_server_socket.bind((t1, port))
text5.insert(tkinter.INSERT, "IP地址:" + t1 + " 端口号:" + t2 + "\n")
tcp_server_socket.listen(128)
print("-----1----")
# 4. 等待别人的电话到来(等待客户端的链接 accept)
new_client_socket, client_addr = tcp_server_socket.accept()
print("-----2----")
ip, port1 = client_addr
print(client_addr)
# 接收客户端发送过来的请求
recv_data = new_client_socket.recv(1024)
print(recv_data)
text5.insert(tkinter.INSERT, datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S') + "\n")
text5.insert(tkinter.INSERT, "Receive from " + ip + " %d" %
port1 + ":" + recv_data.decode('utf-8') + "\n")
# 回送一部分数据给客户端
win.update()
new_client_socket.send("Hello!".encode("utf-8"))
# 关闭套接字
new_client_socket.close()
tcp_server_socket.close()
# 创建主窗口
win = tkinter.Tk()
# 设置标题
win.title("tcp服务器端")
# 设置大小和位置
win.geometry("500x400")
# 进入消息循环,可以写控件
ti = tkinter.Label(win, width=10, height=1, font=(
"仿宋", 20), text="T喵服务器", justify="left")
text = tkinter.Label(win, width=10, height=1, font=(
"仿宋", 15), text="IP地址", justify="center", bg="white")
text1 = tkinter.Label(win, width=10, height=1, font=(
"仿宋", 15), text="端口号", justify="center", bg="white")
text2 = tkinter.Text(win, width=30, height=1, font=("仿宋", 15))
text3 = tkinter.Text(win, width=30, height=1, font=("仿宋", 15))
text2.insert(tkinter.INSERT, "127.0.0.1")
text3.insert(tkinter.INSERT, "")
button1 = tkinter.Button(win, text="开启", command=func,
width=8, height=1, font=("仿宋", 12))
text4 = tkinter.Label(win, width=10, height=1, font=(
"仿宋", 12), text="服务器日志", justify="center")
text5 = tkinter.Text(win, width=45, height=20, font=("仿宋", 10))
win.update()
ti.grid(row=0, column=1)
text.grid(row=1, column=0)
text1.grid(row=2, column=0)
text2.grid(row=1, column=1)
text3.grid(row=2, column=1)
text4.grid(row=3, column=0)
text5.grid(row=4, column=1)
button1.grid(row=2, column=2)
win.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn