python gui界面 tcp_通过python实现TCP编程

伪代码:

ss = socket() #创建服务器套接字

ss.bind() #把地址绑定到套接字上

ss.listen() #监听连接(最大连接数)

info_loop: #服务器无限循环

cs = ss.accept() #接受客户端连接

comm_loop: #通信循环

cs.recv()/cs.send() #对话(接收/发送)

cs.close() #关闭客户端套接字

ss.close() #关闭服务器

所有的套接字都用socket.socket()函数来创建,服务器需要“坐在某个端口上“等待请求”所以它们必须要“绑定”到一个本地地址上,

由于TCP是一个面向连接的通信系统,在TCP服务器开始工作之前,要先完成一些设置,TCP服务器必须“监听”连接,设置完成之后服务器

就可以进入无限循环了。

一个简单的“单线程”服务器会调用accept()函数等待连接的到来,默认情况下accept()函数是阻塞的,即程序在连接到来之前会处于挂起状态,

套接字也支持非阻塞模式。

一旦接收到一个连接,accept()函数就会返回一个单独的客户端套接字用于后续的通信。

简单的TCP服务器

代码如下

#!/usr/bin/env python3#-*- coding:utf-8 -*-

from socket import *

from time importctime

host= ''port= 12345buffsize= 2048ADDR=(host,port)

tctime=socket(AF_INET,SOCK_STREAM)

tctime.bind(ADDR)

tctime.listen(3)whileTrue:print('Wait for connection ...')

tctimeClient,addr=tctime.accept()print("Connection from :",addr)whileTrue:

data=tctimeClient.recv(buffsize).decode()if notdata:breaktctimeClient.send(('[%s] %s' %(ctime(),data)).encode())

tctimeClient.close()

tctimeClient.close()

TCP客户端代码:

#!/usr/bin/env python3#-*- coding:utf-8 -*-

from socket import *HOST='localhost'PORT= 12345BUFFSIZE=2048ADDR=(HOST,PORT)

tctimeClient=socket(AF_INET,SOCK_STREAM)

tctimeClient.connect(ADDR)whileTrue:

data= input(">")if notdata:breaktctimeClient.send(data.encode())

data=tctimeClient.recv(BUFFSIZE).decode()if notdata:break

print(data)

tctimeClient.close()

note:

如果实在ubuntu下面做练习,需要在防火墙上添加allow条目,具体命令是

ufw allow 12345/tcp

也可以直接关闭防火:

ufw disable

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络安全基础知识笔记

1、网络安全威胁介绍非法授权访问:没有预先经过同意,就使用网络或相关的计算机资源就是非授权访问。主要有以下几种形式:身份攻击、假冒、非法用户进入网络系统进行违法操作、合法用户以未授权的方式进行操作。信息泄露丢失:主要是…

Delphi面向对象学习随笔七:COM

作者:巴哈姆特http://www.cnpack.org(转载请注明出处并保持完整) 上一篇,我们介绍了接口。如果没有接触过COM对象的话,你会觉得接口真的很麻烦,也许会有:“还不如直接定义一个类更方便”的想法。…

lambda

例子:

mysql查询语句详解_基于mysql查询语句的使用详解

1> 查询数据表除了前三条以外的数据。起初我想到的是这条语句SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ORDER BY userid LIMIT 3) ORDER BY userid DESC但是运行的时候会报 This version of MySQL doesnt yet support LIMIT & IN/ALL/ANY/SO…

数据库技术基础:数据库与数据库管理系统概念介绍

一、数据库系统基本概念知识1、 数据(Data)用来描述事物的符号记录,它具有多种表现形式比如文字、图形、图像、视频等。信息:是现实事物的存在方式或状态的反映。信息的特性有可感知、可存储、可加工、可传递、可再生等。2、 数据…

unity3d collider自动调整大小_Maya模型在Unity3d中的快速烘焙【2020】

本文小姐姐将以一个Maya的室内小客厅场景为例,和童鞋们一起讨论Unity3d快速烘焙Maya室内模型光照的方法,一方面是对前面知识的综合应用,另一方面满足一下做室内设计童鞋的学习需求。话不多说,开工!这个例子的Maya场景模…

angualarjsdemo

AngularJs学习笔记--Forms 原版地址:http://code.angularjs.org/1.0.2/docs/guide/forms 控件(input、select、textarea)是用户输入数据的一种方式。Form(表单)是这些控件的集合,目的是将相关的控件进行分组…

Java中Comparator比较器的使用以及使用lamba简化代码

代码例子&#xff1a; /*** 测试Comparator*/Testpublic void test17() {//原始方法Comparator<Integer> comparator new Comparator<Integer>() {Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1, o2);}};int compare1 compara…

php字符串转换mysql_在PHP中将字符串转换为MySQL时间戳格式

我使用从androidjava应用程序发送的字符串在php中编写查询.查询是这样的&#xff1a;$insertSQL sprintf("INSERT INTO app_DuckTag (taste) VALUES (%s) WHERE species%s AND timestamp%s",GetSQLValueString($_POST[taste], "text"),GetSQLValueString(…

数据库技术基础:数据库管理系统的功能介绍笔记

1、DBMS功能介绍1.1 数据定义数据库定义语言&#xff08;DDL&#xff09;&#xff1a;可以对数据库结构描述&#xff0c;包括外模式、模式、内模式的定义&#xff1b;数据库完整性定义&#xff1b;安全保密定义比如口令、级别和存取权限。这些定义存储在数据字典中是DBMS运行的…

charles乱码_基于iOS的Charles抓包实践

奇技指南在应用开发过程中&#xff0c;通过抓包调试服务端接口的场景时常出现。Charles和Wireshark是开发过程中最常用的两款软件。那么今天&#xff0c;让我们以iOS为例&#xff0c;聊一聊Charles抓包。本文来自360奇舞团QiShare团队投稿。在日常开发中&#xff0c;我们无法看…

分珠(dfs+并查集)

1140 分珠 时间限制:500MS 内存限制:65536K提交次数:24 通过次数:18 题型: 编程题 语言: G;GCC Description 如下图所示&#xff0c;有若干珠子&#xff0c;每颗珠子重量不同&#xff0c;珠子之间有一些细线将它们连在一起。现要求切断一些细线&#xff0c;将它们分成两部分…

那些程序员爆笑段子,扎心了…

1、特殊“2020是属于程序员的一年。”“怎么说&#xff1f;”“2020-1024996。”2、真相“你们程序员是不是没见过下班时候的太阳&#xff1f;”“也不是啦&#xff0c;夏天的时候还是能看到的。”“哦哦&#xff0c;夏天黑得比较晚。”“不是&#xff0c;是天亮得比较早。”3、…

lambda中sorted排序

准备工作&#xff0c;新建一个User类 使用stream排序操作&#xff08;默认ASC排序) stream倒序排序操作 sorted(Comparator.reverseOrder()) 代码例子&#xff1a; /*** lambda* sorted排序*/Testpublic void test19() {List<Integer> list new ArrayList<>();…

python中的括号不是西文吗_二级Python---python语言的基本语法元素(Day1)

一、基本输入输出函数Python中有三个重要的基本输入、输出函数&#xff0c;用于输入、转换和输出&#xff0c;分别是input()、eval()、print()。1.print()作用&#xff1a;输出运算结果&#xff1b;根据输出内容的不同&#xff0c;有三种用法。①、仅用于输出字符串&#xff0c…

chart.js 饼图显示百分比_实战PyQt5: 135-数据可视化之QChart绘制饼图

饼图是数据可视图表的基本类型&#xff0c;在QChart中&#xff0c;QPieSeries, QPieSlice处理饼图的绘制。QPieSeriesQPieSeries类以饼图形式显示数据。饼图系列由定义为QPieSlice对象的切片组成。切片可以具有任何值&#xff0c;因为QPieSeries对象计算切片的百分比与系列中所…

lambda中使用filter过滤

单一条件过滤 /*** 测试filter*/Testpublic void testFilter() {List<User> user new ArrayList<>();user.add(new User(1L, 18, "小明"));user.add(new User(2L, 20, "小王"));user.add(new User(3L, 28, "小刚"));user.add(new U…

Silverlight 打印

摘自&#xff1a;http://www.cnblogs.com/jiajiayuan/archive/2012/04/13/2444246.html Silverlight中的打印只有一个类&#xff0c;那就是PrintDocment这个对象来实现。下面我用两种方法来实现Silverlight的打印&#xff1a;第一种&#xff1a; private void btnPrint_Click(o…

数据库系统的体系结构知识笔记

1、集中式数据库系统分时系统环境下的集中式数据库系统结构诞生于20世纪60年代中期。当时的硬件和操作系统决定了分时系统环境下的集中式数据库系统构成早期的数据库技术的首选结构。数据和数据管理都是集中的&#xff0c;数据库系统的所有系统&#xff0c;从形式的用户到DBMS核…

mysql2014授权设置_mysql权限管理(2014-09-15)

本文比较碎片化&#xff0c;不过以问答的形式比较容易理解。如何查看mysql的当前登录的用户&#xff1f;select user();mysql -hlocalhost -uroot 与root192.168.11.100 区别&#xff1f;mysql -hlocalhost -uroot只能在本地进行登录&#xff0c;而root192.168.11.100不能在本…