猫史档案馆


【Python作品分享】tcpserver

用户:sparkle-xUisparkle-xUi查看:0 回复:0 评论:0 创建时间:2020-12-23T11:12:38


【作品展示】

center_image

 

【作品介绍】

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


回复

上一页1 页 / 共 0下一页