国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

小小聊天室Python代碼實現

2019-11-25 16:36:43
字體:
來源:轉載
供稿:網友

相對于Java方式的聊天室,Python同樣可以做得到。而且可以做的更加的優雅。想必少了那么多的各種流的Python Socket,你一定會喜歡的。
至于知識點相關的內容,這里就不多說了。

UDP方式

服務器端

# coding:utf-8#  __author__ = 'Mark sinoberg'#  __date__ = '2016/7/7'#  __Desc__ = 創建一個簡單的套接字監聽請求import socketHOST = '192.168.59.255'PORT = 9998s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.bind(('',PORT))print '套接字已啟動!'while True:  data,addr = s.recvfrom(1024)  print addr,str(' : ')+data

客戶端

# coding:utf-8#  __author__ = 'Mark sinoberg'#  __date__ = '2016/7/7'#  __Desc__ = socket的客戶端的簡單實現import socketPORT = 9998HOST = '192.168.59.255's = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)words = raw_input('Client:')while words != 'quit':  s.sendto(words,(HOST,PORT))  words = raw_input('Client:')s.close()

是不是很簡單啊。我們需要注意的就是socket的第二個參數為SOCK_DGRAM。因為這和TCP方式的SOCK_STREAM 有所不同。

TCP方式

服務器端

# coding:utf-8#  __author__ = 'Mark sinoberg'#  __date__ = '2016/7/7'#  __Desc__ = 簡單的tcpsocket的實現from socket import *from time import ctimeHOST = ''PORT = 9999BUFFERSIZE = 1024ADDRESS = (HOST,PORT)s = socket(AF_INET,SOCK_STREAM)s.bind(ADDRESS)s.listen(5)while True:  print 'Waiting for clients cennect!'  tcpclient,addr = s.accept()  print 'Connected By ',addr  while True:    try:      data = tcpclient.recv(BUFFERSIZE)    except Exception,e:      print e.message      tcpclient.close()      break    if not data:      print "No Data received!"      break    senddata = 'Hi,you send me:[%s]%s'%(ctime(),data.encode('utf8'))    tcpclient.send(senddata.encode('utf8'))    print addr,' Says:',ctime(),data.encode('utf8')tcpclient.close()s.close()

 客戶端

# coding:utf-8#  __author__ = 'Mark sinoberg'#  __date__ = '2016/7/7'#  __Desc__ = 簡單的tcp socket客戶端的實現from socket import *class TcpClient:  # HOST = 'localhost'  PORT = 9999  HOST = '192.168.59.225'  BUFFSIZ = 1024  ADDR = (HOST,PORT)  def __init__(self):    self.client = socket(AF_INET,SOCK_STREAM)    self.client.connect((self.HOST,self.PORT))    while True:      senddata = raw_input('>>>')      if not senddata:        print 'Please input some words!/n>>>'        continue      if senddata == "quit":        break      self.client.send(senddata.encode('utf8'))      recvdata = self.client.recv(self.BUFFSIZ)      if not recvdata:        break      print recvdata.encode('utf8')if __name__ == "__main__":  client = TcpClient()

TCP方式演示結果:(注意先開啟服務器端)

服務器端

D:/Software/Python2/python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTCPServer.py
Waiting for clients cennect!
Connected By  ('192.168.59.225', 63095)
('192.168.59.225', 63095)  Says: Thu Jul 07 16:01:10 2016 Hello World
('192.168.59.225', 63095)  Says: Thu Jul 07 16:01:15 2016 haode
No Data received!
Waiting for clients cennect!

客戶端

D:/Software/Python2/python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTcpClient.py
>>>Hello World
Hi,you send me:[Thu Jul 07 16:01:10 2016]Hello World
>>>
Please input some words!
>>>
>>>haode
Hi,you send me:[Thu Jul 07 16:01:15 2016]haode
>>>quit

Process finished with exit code 0

總結

簡單的使用TCP或者是UDP確實很容易,然而要想更好的利用這兩個協議,就需要好好的設計一番了。

這里我想強調的是,注意tcp和udp創建套接字時指定的參數即可。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 攀枝花市| 米泉市| 昌黎县| 宝山区| 罗定市| 紫阳县| 府谷县| 瑞金市| 舒兰市| 西藏| 汉源县| 玉山县| 霍州市| 南宁市| 贵定县| 原平市| 美姑县| 白沙| 徐闻县| 任丘市| 海宁市| 梁山县| 铜梁县| 东方市| 炎陵县| 中方县| 高要市| 朔州市| 格尔木市| 灌阳县| 福州市| 寻乌县| 平乐县| 桑日县| 清丰县| 洛阳市| 萝北县| 通化县| SHOW| 社会| 阜新|