有关学习了TCP/IP的数据结构,能够发送数据并且发送数据要有反馈,这里我知道了主要发送数据给服务器
给定的服务器代码:
from socketserver import ThreadingTCPServer, StreamRequestHandler
import time
import threading
class TcpSer(ThreadingTCPServer):
def __init__(self,server_address, RequestHandler):
self.daemon_threads = True
self.allow_reuse_address = True
ThreadingTCPServer.__init__(self, server_address, RequestHandler)
class RequestHandler(StreamRequestHandler):
wfiles = []
rfiles = []
def handle(self):
flag = True
while flag:
time.sleep(0.5)
clientaddress = self.client_address
if self.wfile not in self.wfiles:
self.wfiles.append(self.wfile)
print(str(clientaddress)+"已连接")
self.wfile.write(b'hello')
self.getData()
# 服务器可以接收如下命令:help,connect,exit
# 服务器端收到help,返回“commands include help,connect,exit”
# 收到,connect,返回“connect code is 400”
# 收到,exit,返回“exit code is {500}”
# 数据解析
def getData(self):
while True:
time.sleep(0.5)
input = self.rfile.read(1024)
input = input.decode().strip()
print(input)
if input == 'help':
self.wfile.write(b'commands include help,connect,exit')
if input == 'connect':
self.wfile.write(b'connect code is 400')
if input == 'exit':
self.wfile.write(b'exit code is {500}')
if input not in ['help','connect','exit']:
self.wfile.write(b'the command is wrong')
if __name__ == '__main__':
server_address = ('',10001)
tcp = TcpSer(server_address,RequestHandler)
print("服务已开启\r\n")
tcp.serve_forever()
开启服务器会有提示:
客户端:
这里我只进行了发送数据,并没有数据进行切片处理反馈回来规定的数据。
然后可以发送数据:
遇到的问题及其解决办法
一:[WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试
1:C:\Users\wj>netstat -ano|findstr 10001
TCP 0.0.0.0:10001 0.0.0.0:0 LISTENING 4086
UDP 0.0.0.0:10001 *:* 4086
2:C:\Users\wj>tasklist |findstr 4086
KGService.exe 4086 Console 3 14,400 K
3:C:\Users\wj>taskkill /pid 4086/F
成功: 已终止 PID 为 8124 的进程。
二:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in position 0:invalid start byte
1:用notepad++打开文件,在工具栏找到编码,将ANSI编码改为UTF-8偏码,重新保存就可以用了
2:还可以将# -*- coding:utf-8 -*-改为#-*-coding:GBK -
三:ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
三:四:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
原因:同一个进程开两个文件
四:如图情况
原因:代码的地址应该为
hostname ='localhost'