ホームページ >バックエンド開発 >Python チュートリアル >TCP プロトコルに基づいてクライアントとサーバー間で中国語の自動応答チャット機能を実装するための Python+Socket の詳細な紹介

TCP プロトコルに基づいてクライアントとサーバー間で中国語の自動応答チャット機能を実装するための Python+Socket の詳細な紹介

巴扎黑
巴扎黑オリジナル
2017-09-02 13:10:511712ブラウズ

この記事では、TCPプロトコルに基づいてクライアントとサーバー間で中国語の自動応答チャット機能を実装するためのPython+Socketを主に紹介し、自動応答機能を備えたTCPチャットプログラムを実装するためのPython+Socketの関連操作方法と注意事項を分析します。必要な友達はそれを参考にしてください

この記事では、TCP プロトコルに基づいてクライアントとサーバー間で中国語の自動応答チャット機能を実装する Python+Socket の例について説明します。参考までに共有します。

【苦情】

インターネット上のコードは確実に人を殺すように書かれているようですが、実行するには問題があります。
コードが大好きでコードを集めるのが好きな友達の中には、他の人のコードを見つけると貼り付けたりコピーしたりする人もいます。でも、少なくとも実行してみることはできます、お兄さん

【本文】

昨日、UDP プロトコルを実行するように C/S チャット プログラムを修正しましたが、TCP プロトコルは機能しませんでした。様々な試練、様々な落とし穴。

次の変更を加えた後、最終的に機能します:

1. 送信された情報と受信された情報をそれぞれエンコードおよびデコードします
2. クライアントの 10 行目のバインドを変更して接続します (これは本当に大きな問題です、ピット! )

(この記事は Windows 7 + Python 3.4 に基づいています)

完全なコードは次のとおりです (保証、私が個人的にテストしました!):

サーバー側:


# tcp_server.py
'''服务器'''
from socket import *
from time import ctime
HOST = '' #主机地址
PORT = 23345 #端口号
BUFSIZ = 2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区
ADDR = (HOST, PORT) #链接地址
tcpSerSock = socket(AF_INET, SOCK_STREAM) #创建一个TCP套接字
tcpSerSock.bind(ADDR) #绑定地址
tcpSerSock.listen(5) #最大连接数为5
while True: #无限循环
  print('尝试连接客户端。。。')
  tcpCliSock, addr = tcpSerSock.accept() #等待接受连接
  print('链接成功,客户端地址为:', addr)
  while True:
    data = tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小
    if not data: break #如果data为空,则跳出循环
    print(data.decode())
    msg = '{} 服务器已接收 [自动回复]'.format(ctime())
    tcpCliSock.send(msg.encode())
  tcpCliSock.close() #关闭连接
tcpSerSock.close() #关闭服务器

クライアント側:


# tcp_client.py
'''客户端'''
from socket import *
from time import ctime
HOST = 'localhost' #主机地址
PORT = 23345 #端口号
BUFSIZ = 2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区
ADDR = (HOST, PORT) #链接地址
tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建一个TCP套接字
#tcpCliSock.bind(ADDR) #绑定地址
tcpCliSock.connect(ADDR) #绑定地址
while True:
  msg = input('请输入:') #输入数据
  if not msg: break #如果 msg 为空,则跳出循环
  tcpCliSock.send(msg.encode())
  data = tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小
  if not data: break #如果data为空,则跳出循环
  print(data.decode())

【スクリーンショットの実行】

実験方法: 最初にサーバーを実行し、次にクライアントを実行します

その後、クライアント上でサーバーと自由にチャットできます:

以上がTCP プロトコルに基づいてクライアントとサーバー間で中国語の自動応答チャット機能を実装するための Python+Socket の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。