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.pswp.cn/news/271326.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271326.shtml
英文地址,請注明出處:http://en.pswp.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不能在本…