Python基於socket編程(TCP版聊天 含配置)

一、eclipse配置pyDev

(已经安装并配置了eclipse)

1. 安装

点击前往官网下载
下载:pydev 6.1.0.zip

将pydev 6.1.0.zip解压,将feafures和plugins两个目录的文件复制到eclipse文件夹下相应目录即可。

2.eclipse+pydev配置

注意:windows的用户名、eclipse的workspace都请用英文。否则你后面通过pip安装python包的时候会不成功的。python处理中文也容易出错。
运行eclipse,新建项目
在这里插入图片描述
在这里插入图片描述
这个时候finish是不可用的,你需要点击
在这里插入图片描述
然后点击Quick Auto-Config
在这里插入图片描述
点击finish
然后 open
在这里插入图片描述

3. eclipse配置

在这里插入图片描述
(1)设置workspace文本文件缺省字符集
位置:General->workspace
设置:
Text file encoding 为utf-8
New text file line delimiter 为Unix
在这里插入图片描述
(2)设置pep8
位置:PyDev->Editor->Code Analysis
设置:pep8设置为Warning
在这里插入图片描述
(3)设置自动完成
位置:PyDev->Editor->Save Actions
设置:
Auto-format editor contents before saving? 勾选上
Update date field? 勾选上
Date field name: 下划线update下划线
Date field format:yyyy-MM-dd HH:mm
在这里插入图片描述
(4)设置新建模块的模板
位置:PyDev->Editor->Templates
在这里插入图片描述
选择,然后点击edit…按钮,修改内容:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
u'''
Created on ${date}

@author: ${user}
'''
__author__ = 'xxx <[email protected]>'
__version__ = '1.0.0'
__company__ = u'xxxx'
__updated__ = '1900-01-01 00:00'

if __name__ == "__main__":
    pass
${cursor}

(可以自行修改,也可以不设置)

(5)设置代码风格
位置:PyDev->Editor->Code Style->Code Format
Use autopep8.py for code formatting? 勾选上
在这里插入图片描述
配置完成。

二、Tcp聊天(不可视)

1. 架构

内容如下:
在这里插入图片描述
过程:
(1)创建PyDev Project工程
在这里插入图片描述

(2)创建client包和server包
在这里插入图片描述
在这里插入图片描述
同理,创建server包。

(3)创建PyDev Module文件
client包下创建client
在这里插入图片描述
在这里插入图片描述
同理,server包下创建server。

2. 代码

Client:

import socket
s = socket.socket()
host = '192.168.43.66'
port = 12345
s.connect((host, port))
print('Linked')
info = ''
while info != 'exit':
    print('server:' + info)
    send_mes = input()
    s.send(send_mes.encode())
    if send_mes == 'exit':
        break
    info = s.recv(1024).decode()
s.close()

Server:

import socket
host = '192.168.43.66'
port = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
sock, addr = s.accept()
print('Connection built')
info = sock.recv(1024).decode()
while info != 'exit':
    print('client:' + info)
    send_mes = input()
    sock.send(send_mes.encode())
    if send_mes == 'exit':
        break
    info = sock.recv(1024).decode()
sock.close()
s.close()

3. 运行结果

客户端:
在这里插入图片描述
服务器:
在这里插入图片描述

三、Tcp聊天(可视界面)

1. 安装wxpython

安装较为简单,除了选择安装路径,基本一路next
安装教程:点此查看
安装完成,打开
在这里插入图片描述

2. 创建客户端可视界面

构造如下:
在这里插入图片描述
在这里插入图片描述
如何使用wxFormBuilder生成界面:
只需注意每次要先在左边选中所要放置控件等的父类容器,再在右边选择
在这里插入图片描述
例如,创建一个窗体的第一步,选择forms放置一个Frame
在这里插入图片描述
在这里插入图片描述
然后设置layout
在这里插入图片描述
按照顺序添加进去即可。

一些常用知识:
设置layout的线性方向
在这里插入图片描述
设置layout或控件所占其空间比例:
在这里插入图片描述
占满空间
在这里插入图片描述

3. 其他设置

项目的code_generation勾选为Python
在这里插入图片描述
选中button,依次在events中为三个button添加click事件
在这里插入图片描述
此处可查看python代码在这里插入图片描述

默认wx.style不支持换行,勾选上wxTE_MULTLINE设置换行
在这里插入图片描述

4. 导出

保存,生成可视界面文件
再按F8获取noname.py文件
在这里插入图片描述
可视界面创建完成。

5. eclipse创建文件

和上面相同的方法构建;
将上面导出的noname.py文件导入(导入之后会报错,需要安装pip和下载wxpython库,方法:win10安装pip&下载wxpython库
创建一个PyDev Module文件,命名为clientUI;
在这里插入图片描述

6. 代码

clientUI:

import wx
from client import noname
from socket import *

s = socket(AF_INET, SOCK_STREAM)


class ClientFrame(noname.MyFrame1):
    def __init__(self, parent):
        noname.MyFrame1.__init__(self, parent)

    def btn_in(self, event):
        address = self.m_textCtrl1.GetValue()  # 服务器的ip地址
        port = int(self.m_textCtrl4.GetValue())  # 服务器的端口号
        s.connect((address, port))

    def btn_send(self, event):  # 发送消息
        buffsize = 1024  # 接收数据的缓存大小
        senddata = self.m_textCtrl3.GetValue()  # 获得输入栏的内容
        s.send(senddata.encode())  # 发送消息
        recvdata = s.recv(buffsize).decode('utf-8')  # 接收消息,格式转换
        self.m_textCtrl2.AppendText('\n' + recvdata)
        self.m_textCtrl3.SetValue("")  # 清空输入栏

    def btn_out(self, event):
        self.Close(True)  # 关闭窗口


def main():
    app = wx.App(False)
    frame = ClientFrame(None)
    frame.Show(True)
    # 启动窗口
    app.MainLoop()


if __name__ == "__main__":
    try:
        main()
    finally:
        s.close()

注意自己的button的click事件名称。
server代码与上一个相同。

7. 运行

先运行server,再运行clientUI
开始发送消息
在这里插入图片描述
over

猜你喜欢

转载自blog.csdn.net/weixin_42248864/article/details/84947753