聊天室Python代码实现
相对于Java方式的聊天室,Python同样可以做得到。而且可以做的更加的优雅。想必少了那么多的各种流的Python Socket,你一定会喜欢的。
至于知识点相关的内容,这里就不多说了。
UDP方式
服务器端
# coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/7/7' # __Desc__ = 创建一个简单的套接字监听请求 import socket HOST = '192.168.59.255' PORT = 9998 s = 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 socket PORT = 9998 HOST = '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 ctime HOST = '' PORT = 9999 BUFFERSIZE = 1024 ADDRESS = (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创建套接字时指定的参数即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。
更多聊天室Python代码实现相关文章请关注PHP中文网!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Artikel ini membincangkan perpustakaan Python yang popular seperti Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask, dan Permintaan, memperincikan kegunaan mereka dalam pengkomputeran saintifik, analisis data, visualisasi, pembelajaran mesin, pembangunan web, dan h

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Ekspresi biasa adalah alat yang berkuasa untuk memadankan corak dan manipulasi teks dalam pengaturcaraan, meningkatkan kecekapan dalam pemprosesan teks merentasi pelbagai aplikasi.

Artikel ini membincangkan peranan persekitaran maya di Python, memberi tumpuan kepada menguruskan kebergantungan projek dan mengelakkan konflik. Ia memperincikan penciptaan, pengaktifan, dan faedah mereka dalam meningkatkan pengurusan projek dan mengurangkan isu pergantungan.

Fastapi ...

Di Python, bagaimana untuk membuat objek secara dinamik melalui rentetan dan panggil kaedahnya? Ini adalah keperluan pengaturcaraan yang biasa, terutamanya jika perlu dikonfigurasikan atau dijalankan ...
