用Python寫(xiě)一個(gè)模擬qq聊天小程序的代碼實(shí)例
Python 超簡(jiǎn)單的聊天程序
客戶(hù)端:
import socket, sys
host = '10.248.27.23'
# host = raw_input("Plz imput destination IP:")
# data = raw_input("Plz imput what you want to submit:")
port = 51423
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((host, port))
except socket.gaierror, e:
print "Address-related error connecting to server: %s" %e
sys.exit(1)
except socket.error, e:
print "Connection error: %s" %e
sys.exit(1)
while 1:
try:
data = raw_input("I say: ")
s.send(data)
buf = s.recv(1024)
if len(buf):
print "he say: "+buf
except:
print "Dialogue Over"
s.close()
sys.exit(0)
服務(wù)器:
import socket, traceback, sys
host = ''
port = 51423
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)
ClientSock, ClientAddr = s.accept()
while 1:
try:
buf = ClientSock.recv(1024)
if len(buf):
print "he say: "+buf
data = raw_input("I say: ")
ClientSock.sendall(data)
except:
print "Dialogue Over"
ClientSock.close()
sys.exit(0)
模擬qq聊天,語(yǔ)言環(huán)境:Python3
示例代碼:
# 編寫(xiě)一個(gè)程序,模擬qq聊天
# 要求:程序可以同時(shí)發(fā)消息和收消息,發(fā)和收的過(guò)程中程序不退出
# 思路:使用socket來(lái)完成(socket 是全雙工模式,可以實(shí)現(xiàn)收和發(fā)同時(shí)進(jìn)行),定義倆個(gè)線程,一個(gè)負(fù)責(zé)發(fā)消息、一個(gè)負(fù)責(zé)收消息
from threading import Thread
from socket import *
def rec_data():
while True:
rec_info = udpsocket.recvfrom(1024)
print("\r>>%s:%s" % (rec_info[1], rec_info[0].decode("gb2312")))
print("<<", end="")
def send_date():
while True:
send_mes = input("<<")
udpsocket.sendto(send_mes.encode("gb2312"), (desip, desport))
udpsocket = None
desip = ""
desport = 0
def main():
global udpsocket
global desip
global desport
desip = input("對(duì)方IP:")
desport = int(input("對(duì)方端口:"))
udpsocket = socket(AF_INET, SOCK_DGRAM)
udpsocket.bind(("", 9001))
tr = Thread(target=rec_data)
ts = Thread(target=send_date)
tr.start()
ts.start()
tr.join()
ts.join()
if __name__ == '__main__':
main()
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
關(guān)于DataFrame數(shù)據(jù)的查詢(xún)和編輯
在使用pandas處理DataFrame時(shí),可通過(guò)列索引標(biāo)簽獲取列數(shù)據(jù),行數(shù)據(jù)的獲取可以利用行索引或位置切片,如iloc和loc方法,增加數(shù)據(jù)時(shí),可通過(guò)append方法增加行,直接賦值增加列,刪除數(shù)據(jù)則通過(guò)drop方法,通過(guò)設(shè)置axis參數(shù)確定是刪除行還是列2024-09-09
Python編程之字符串模板(Template)用法實(shí)例分析
這篇文章主要介紹了Python編程之字符串模板(Template)用法,結(jié)合具體實(shí)例形式分析了Python字符串模板的功能、定義與使用方法,需要的朋友可以參考下2017-07-07
剖析Python的Tornado框架中session支持的實(shí)現(xiàn)代碼
這篇文章主要介紹了剖析Python的Tornado框架中session支持的實(shí)現(xiàn)代碼,這樣就可以使用Django等框架中大家所熟悉的session了,需要的朋友可以參考下2015-08-08
Python實(shí)戰(zhàn)小游戲飛機(jī)大戰(zhàn)詳解
飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂(lè)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫(xiě)一個(gè)簡(jiǎn)單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下2021-11-11
如何用Python中19行代碼把照片寫(xiě)入到Excel中
這篇文章主要介紹了如何利用Python3中的19行代碼把照片寫(xiě)入到Excel中,文章內(nèi)容實(shí)現(xiàn)的不是截取一張圖片,粘貼到excel,而是通過(guò)像素寫(xiě)入到excel中,需要的朋友可以參考一下2022-02-02
python3獲取兩個(gè)日期之間所有日期,以及比較大小的實(shí)例
下面小編就為大家分享一篇python3獲取兩個(gè)日期之間所有日期,以及比較大小的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
django一對(duì)多模型以及如何在前端實(shí)現(xiàn)詳解
這篇文章主要介紹了django一對(duì)多模型以及如何在前端實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python實(shí)現(xiàn)類(lèi)的創(chuàng)建與使用方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)類(lèi)的創(chuàng)建與使用方法,結(jié)合簡(jiǎn)單計(jì)算器功能實(shí)例分析了Python類(lèi)的定義與使用方法,需要的朋友可以參考下2017-07-07

