欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)點對點聊天程序

 更新時間:2018年07月28日 08:44:17   作者:csuzhucong  
這篇文章主要為大家詳細介紹了python實現(xiàn)點對點聊天程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下

用Python實現(xiàn)點對點的聊天,2個程序,一個是client.py,一個是server.py,通過本機地址127.0.0.1連接進行通信,利用多線程把發(fā)送消息和接收消息分開獨立進行。

client代碼:

import socket
import sys
import threading
import time
 
class client():
 def __init__(self):
  self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  self.ip = "127.0.0.1"
 
 def connect(self):
  try:
   self.s.connect((self.ip,8888))
   print("connect success")
   print('connect time: '+time.ctime())
  except ConnectionError:
   print('connect error')
   sys.exit(-1)
  except:
   print('unexpect error')
   sys.exit(-1)
 
 def send_sth(self):
  while True:
   sth=input('say something:\n')
   try:
    self.s.sendall(sth.encode('utf-8'))
   except ConnectionError:
    print('connect error')
    sys.exit(-1)
   except:
    print('unexpect error')
    sys.exit(-1)
 
 def receive(self):
  while True:
   try:
    r=self.s.recv(1024)
    print ('get message:'+r.decode('utf-8'))
   except ConnectionError:
    print('connect error')
    sys.exit(-1)
   except:
    print('unexpect error')
    sys.exit(-1)
 
c1 = client()
c1.connect()
threading._start_new_thread(c1.receive,())
c1.send_sth()

server代碼:

import socket
import sys
import threading
import time
 
def server():
 def bind():
  HOST='127.0.0.1'
  s.bind((HOST,8888))
  print("bind ok")
 
 def listen():
  s.listen(10)
  print ('Socket now listening')
 
 def send_sth(conn):
  while True:
   try:
    sth=input('say something:\n')
    conn.sendall(sth.encode('utf-8'))
   except ConnectionError:
    print('connect error')
    sys.exit(-1)
   except:
    print('unexpect error')
    sys.exit(-1)
 
 def recv(conn):
   while True:
   try:
    data=conn.recv(1024)
    data2=data.decode('utf-8')
    print('get message:'+data2)
   except ConnectionError:
    print('connect error')
    sys.exit(-1)
   except:
    print('unexpect error')
    sys.exit(-1)
 
 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 bind()
 listen()
 conn,addr=s.accept()
 print("connect success")
 print('connect time: '+time.ctime())
 threading._start_new_thread(recv,(conn,))
 send_sth(conn)
 
if __name__=='__main__':
 server()

開啟多線程有2種方法,上面2個程序都是用函數(shù)的方法,還有一種方法是用類繼承threading類

代碼:

import socket
import threading
class client(threading.Thread):
 def __init__(self,sth):
  threading.Thread.__init__(self)
  self.sth=sth
 def run(self):
  s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  ip="127.0.0.1"
  try:
   s.connect((ip,8888))
  except :
   print('con error')
   exit()
  #print("connect success")
  s.sendall(self.sth.encode('utf-8'))
  #print("send success")
  try:
   r=s.recv(1024)
  except:
   print('recv error')
   exit()
  print (r.decode('utf-8'))
c1=client('hello 1')
c1.start()
c2=client('hello 2')
c2.start()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python多重繼承之菱形繼承的實例詳解

    Python多重繼承之菱形繼承的實例詳解

    繼承是面向對象編程的一個重要的方式,通過繼承,子類就可以擴展父類的功能。這篇文章主要介紹了Python多重繼承之菱形繼承,需要的朋友可以參考下
    2020-02-02
  • PyCharm中New Directory 和 New Python Package的區(qū)別解析

    PyCharm中New Directory 和 New Python 

    python package這是一個特殊的目錄,因為在創(chuàng)建該python package的時候,系統(tǒng)會自動地生成一個py文件, init.py,這篇文章主要介紹了PyCharm中New Directory 和 New Python Package的區(qū)別,需要的朋友可以參考下
    2023-12-12
  • Python中requests庫的基本概念與具體使用方法

    Python中requests庫的基本概念與具體使用方法

    requests庫是用python編寫的基于urllib,requests唯一的一個非轉基因的Python HTTP庫,下面這篇文章主要給大家介紹了關于Python中requests庫的基本概念與具體使用方法,需要的朋友可以參考下
    2022-08-08
  • python音頻處理的示例詳解

    python音頻處理的示例詳解

    這篇文章主要介紹了python音頻處理的示例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • python實現(xiàn)在每個獨立進程中運行一個函數(shù)的方法

    python實現(xiàn)在每個獨立進程中運行一個函數(shù)的方法

    這篇文章主要介紹了python實現(xiàn)在每個獨立進程中運行一個函數(shù)的方法,涉及Python操作進程的相關技巧,需要的朋友可以參考下
    2015-04-04
  • 詳解Python中where()函數(shù)的用法

    詳解Python中where()函數(shù)的用法

    本篇文章主要介紹了詳解Python中where()函數(shù)的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 用Python繪制一個仿黑洞圖像

    用Python繪制一個仿黑洞圖像

    黑洞圖像大家都知道,畢竟前幾年剛發(fā)布的時候曾火遍全網,甚至都做成表情包了。本文就來用Python繪制一個仿黑洞圖像,希望大家能夠喜歡
    2023-02-02
  • 使用Python創(chuàng)建快捷方式管理應用

    使用Python創(chuàng)建快捷方式管理應用

    在Windows系統(tǒng)中,快速訪問常用程序通常通過“開始菜單”中的“應用熱門”功能實現(xiàn),在這篇博客中,我將向你展示如何使用Python和wxPython創(chuàng)建一個GUI應用,幫助用戶輕松將桌面上的快捷方式添加到Windows“開始菜單”的“應用熱門”中,需要的朋友可以參考下
    2024-08-08
  • python中pytest收集用例規(guī)則與運行指定用例詳解

    python中pytest收集用例規(guī)則與運行指定用例詳解

    這篇文章主要介紹了python中pytest收集用例規(guī)則與運行指定用例詳解,天會講解一下pytest是如何收集我們寫好的用例?我們又有哪些方式來運行單個用例或者批量運行用例呢,需要的朋友可以參考下
    2019-06-06
  • Python接口自動化測試框架運行原理及流程

    Python接口自動化測試框架運行原理及流程

    這篇文章主要介紹了Python接口自動化測試框架運行原理及流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11

最新評論