python+soket实现 TCP 协议的客户/服务端中文(自动回复)聊天程序

 

【吐槽】

网上的代码害死人,看着都写的言之凿凿,可运行就是有问题。

有些爱好代码、喜欢收藏代码的朋友,看到别人的代码就粘贴复制过来。可是起码你也试试运行看啊大哥

 

【正文】

昨日修改运行了UDP协议的C/S聊天程序,可是TCP协议的怎么都不行。各种试,各种坑。

做了下面几个修改后,终于可以了:

1、对发送、接收的信息,分别进行编码和解码

2、客户端的第13行bind改为connect(这真是个大坑!!)

(本文基于windows 7 + python 3.4)

 

完整代码如下(人头担保,本人亲测正常!):

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

 

 

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

 

【运行截图】

实验方法:先运行服务器端,然后运行客户端

 

然后就可以在客户端自由的与服务器端聊天了:

 

时间: 2024-09-07 17:20:09

python+soket实现 TCP 协议的客户/服务端中文(自动回复)聊天程序的相关文章

python+soket实现UDP协议的客户/服务端中文聊天程序

  没什么特别的东西,网上烂大街的C/S框架.(基于windows 7 + python 3.4)   为了实现中文聊天,我加入了一点修改: msg.encode('utf-8') # msg 为输入(且将要发送出)的信息 data.decode('utf-8') # data 为接收的信息 这样做的原因是 sendto 函数只能发送ASCII字符,不支持发送中文(在 python3 中,中文默认是unicode编码). 所以,信息在送出之前要编码,在接收到信息之后要解码   完整的两个文件如下

tcp连接-TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗?

问题描述 TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗? 比如用来监听连接的socket绑定23端口,服务端每接受一个连接都新开一个线程和客户端通信,并把新socket传递给新线程,是不是所有新创建的socket都是经过23端口和客户端通信? 解决方案 是的,都通过端口23进行通信 解决方案二: 都是监听端口,如果不是客户端就不能将数据发送到服务器 解决方案三: 23只是监听建立连接,后续数据交换走实际上端口

用python的suds访问web service (soap) 服务端是php写的

问题描述 用python的suds访问web service (soap) 服务端是php写的 想让一个系统可以获取另一个系统的数据. 客户端系统是python写的,服务端是用php. python端访问 import suds url = 'http://www.xxxx.cn/soap/Service.php?wsdl' client = suds.client.Client(url) result = client.service.afunction(param1,param2) php服

Python警察与小偷的实现之一客户端与服务端通信实例_python

本文实例讲述了Python警察与小偷的实现之一客户端与服务端通信,分享给大家供大家参考.具体方法分析如下: 该实例来源于ISCC 2012 破解关第四题 目的是通过逆向police,实现一个thief,能够与police进行通信 实际上就是一个RSA加密通信的例子,我们通过自己编写客户端和服务端来实现上面的thief和police的功能. 要通信,这们这次先通过python写出可以进行网络连接的客户端与服务端. 服务端代码如下: #!/usr/bin/env python import Sock

tcp socket客户端和服务端示例分享_C 语言

以下是tcp socket客户端和服务端源码,代码简单大家参考使用吧 Tcp Server 复制代码 代码如下: #include <WinSock2.h>#include <stdio.h>#pragma comment(lib, "ws2_32.lib")int main(){// initial socket libraryWORD wVerisonRequested;WSADATA wsaData;int err;wVerisonRequested =

服务端调用 获取聊天历史记录 返回502 Bad Gateway

问题描述 服务端调用 获取聊天历史记录 返回502 Bad Gateway 解决方案 刚刚获取了一下正常,你再试一下解决方案二:恩,确实可以了.TKS

vc++实现的tcp socket客户端和服务端示例_C 语言

Tcp Server 复制代码 代码如下: #include <WinSock2.h>#include <stdio.h> #pragma comment(lib, "ws2_32.lib") int main(){ // initial socket library WORD wVerisonRequested; WSADATA wsaData; int err; wVerisonRequested = MAKEWORD(1, 1); err = WSASta

客户端和服务端通过建立socket通信,协议是tcp/ip

问题描述 客户端和服务端通过建立socket通信,协议是tcp/ip 有一个问题咨询:一个客户端和一个服务端通过tcp/ip连接(之间建立socket通信),在不断网的情况下,服务端关闭,客户端报警,重新开启服务器,客户端能够重新连接上服务端,但是如果拔掉网线,客户端就连接不上服务端了,但从服务端发送过来的数据还是可以读到,可是从客户端发送的数据不能到达服务端,这是为什么??? 解决方案 TCP的客户端和服务端通信socket 客户端和服务端的TCP基本通信简单的Socket通信客户端和服务端

《Linux高性能服务器编程》——第3章 TCP协议详解 3.1 TCP服务的特点

第3章 TCP协议详解 TCP协议是TCP/IP协议族中另一个重要的协议.和IP协议相比,TCP协议更靠近应用层,因此在应用程序中具有更强的可操作性.一些重要的socket选项都和TCP协议相关. 本章从如下四方面来讨论TCP协议: 不过在详细讨论TCP协议之前,我们先简单介绍一下TCP服务的特点,以及它和UDP服务的区别. 3.1 TCP服务的特点 传输层协议主要有两个:TCP协议和UDP协议.TCP协议相对于UDP协议的特点是:面向连接.字节流和可靠传输. 使用TCP协议通信的双方必须先建立